home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1998 March / Macworld (1998-03) (Disk 1).dmg / Shareware World / Info / For Developers / GhostScript 5.10 / MacGS-510 / doc / history2.txt < prev    next >
Text File  |  1996-07-09  |  191KB  |  5,161 lines

  1.    Copyright (C) 1994 Aladdin Enterprises.  All rights reserved.
  2.   
  3.   This file is part of Aladdin Ghostscript.
  4.   
  5.   Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author
  6.   or distributor accepts any responsibility for the consequences of using it,
  7.   or for whether it serves any particular purpose or works at all, unless he
  8.   or she says so in writing.  Refer to the Aladdin Ghostscript Free Public
  9.   License (the "License") for full details.
  10.   
  11.   Every copy of Aladdin Ghostscript must include a copy of the License,
  12.   normally in a plain ASCII text file named PUBLIC.  The License grants you
  13.   the right to copy, modify and redistribute Aladdin Ghostscript, but only
  14.   under certain conditions described in the License.  Among other things, the
  15.   License requires that the copyright notice and this notice be preserved on
  16.   all copies.
  17.  
  18. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  19.  
  20. This file, history2.txt, describes the changes in older releases of
  21. Ghostscript numbered 2.n.  For more recent changes, see the historyN.txt (N
  22. > 2) and NEWS files.
  23.  
  24. For an overview of Ghostscript and a list of the documentation files, see
  25. README.
  26.  
  27. Version 2.9.10-beta (7/28/94)
  28. ===================
  29.  
  30. This is the last 2.9 beta, since 3.0 will be released on July 31.
  31.  
  32. Documentation
  33. -------------
  34.  
  35. Fixes bugs:
  36.     - A | in gs.1 had a \ in front of it instead of \\.
  37.  
  38. Adds a paragraph in gs.1 that tells how to select paper size.
  39.  
  40. Notes in devs.mak that the cdj550 driver is the best one for the H-P
  41. DeskJet 520, and the pjxl300 driver is the right one for the H-P DeskJet
  42. 1200C.
  43.  
  44. Notes in make.doc that Watcom C++ 10.0 may require a change in a makefile.
  45.  
  46. Procedures
  47. ----------
  48.  
  49. Removes ICCINIT from MODULES.LIS for VMS systems.
  50.  
  51. Updates VMS.MAK to support Motif V1.2.
  52.  
  53. Updates jpeg.mak to work with version 5alpha4 of the IJG JPEG code.
  54.  
  55. Utilities
  56. ---------
  57.  
  58. Fixes bugs:
  59.     - font2c didn't leave extra room in Type 0 font dictionaries for
  60. entries added by definefont.
  61.     - font2c left extra information on the stack.
  62.     - ansi2knr would remove newline characters within formal argument
  63. lists.
  64.     - font2c got an Error: /undefined in makefontprocname.
  65.  
  66. Updates ansi2knr to work better with the GNU configure program.
  67.  
  68. Updates ansi2knr to handle procedure formal arguments automatically.
  69.  
  70. Drivers
  71. -------
  72.  
  73. Fixes bugs:
  74.     - If a file contained color or gray-scale information followed by a
  75. masked image, the X driver would sometimes invert the polarity of the
  76. image.
  77.  
  78. Platforms
  79. ---------
  80.  
  81. Fixes bugs:
  82.     - Unix systems with a 2-argument gettimeofday returned garbage
  83. values for the current time.
  84.     - The VMS build script for compiled fonts omitted the requirement
  85. to load gs_ccfnt.ps.
  86.     - memory_.h didn't note that System V Unix platforms need memmove.
  87.  
  88. On Unix systems, changes the subdirectory of $datadir/ghostscript to just
  89. be the version number (e.g., 2.9.10 rather than gs-2.9.9).
  90.  
  91. Fonts
  92. -----
  93.  
  94. Adds support code for the Wadalab (University of Tokyo) free Kanji font.
  95.  
  96. Notes in the documentation in Fontmap that .pfa and .pfb fonts are
  97. compatible with ATM, but .gsf fonts are not.
  98.  
  99. Changes the names of Thomas Wolff's expanded Hershey fonts, replacing .gsf
  100. with .pfa.
  101.  
  102. Interpreter
  103. -----------
  104.  
  105. Fixes bugs:
  106.     - The scanner became confused if the literal names /<< or />>
  107. straddled an input buffer boundary.
  108.     - .setlanguagelevel gave an invalidaccess error when
  109. switching from level 2 to level 1.
  110.     - currentgstate, setgstate, and copy for gstates didn't do
  111. the necessary access checks.
  112.     - The Category resource category didn't define .ResourceFile, so
  113. /Category resourcestatus gave an error.
  114.     - The garbage collector didn't trace the structures used by
  115. filenameforall properly on most platforms.
  116.     - Automatically expanding systemdict didn't work, but didn't give
  117. an error.
  118.     - Automatically expanding a dictionary usually expanded it by too
  119. much.
  120.     - systemdict was created too small.
  121.     - The garbage collector didn't trace the structures referenced only
  122. from allocator objects, leading to attempts to access freed storage.
  123.     - If a chunk was empty, the GC tried to free it even if it had
  124. inner chunks.
  125. *    - The outer loop in dict_find_name_by_index() could cause an
  126. addressing fault on segmented machines when looking up Level 2 operators,
  127. because the offset could get decremented past 0.
  128.     - The heap_available procedure in gsmemory.c didn't convert
  129. properly to non-ANSI syntax.  (New bug in 2.9.9.)
  130.     - The ledgertray procedure wasn't implemented.
  131.     - The xxxtray procedures didn't set the page size.
  132.     - The settumble operator wasn't implemented, even as a dummy.
  133.     - glyphshow didn't work with Type 3 fonts.
  134.     - Supplying a RenderTable for a CIE color space caused an error.
  135.     - The DCT filter code had the jpeg/ subdirectory name "wired in" to
  136. the source files.
  137.  
  138. Adds experimental filters for Burrows/Wheeler block sorting compression
  139. (BWBlockSortEncode/Decode), described in DEC SRC Research Report #124,
  140. move-to-front coding (MoveToFrontEncode/Decode), and a simple form of
  141. Huffman coding (BoundedHuffmanEncode/Decode).  These are experimental -- do
  142. not rely on them remaining the same (or existing at all) in future
  143. releases!
  144.  
  145. Adds all function prototypes needed to pacify strict compilers.
  146.  
  147. Removes all explicit references to userdict from the C code.
  148.  
  149. Changes the SAFER switch so that it disallows not only explicit writing,
  150. deleting, or renaming of files, but also disallows specifying an explicit
  151. OutputFile for any device (except for the initial device, by means of
  152. -sOutputFile= on the command line).
  153.  
  154. Streams
  155. -------
  156.  
  157. Fixes bugs:
  158.     - Hex decoding (ASCIIHexDecode stream and <> literals) didn't treat
  159. the data source as read-only (although it restored it to its original
  160. contents).
  161.  
  162. Implements move-to-front coding, a simple form of Huffman coding, and
  163. Burrows/Wheeler block sorting compression.
  164.  
  165. Library
  166. -------
  167.  
  168. Fixes bugs:
  169. *    - (The following bug fix was actually implemented somewhere around
  170. version 2.7.)  restore didn't purge character cache entries whose keys were
  171. names created more recently than the save.
  172.     - gstype1.h declared gs_type1_state_sizeof as an extern, but this
  173. wasn't defined anywhere.
  174.     - gs_makeimagedevice didn't set the size of the palette correctly,
  175. which confused the GC.
  176.     - gs_makeimagedevice didn't set num_components to 1 for
  177. mapped-color devices with only gray values.
  178. *    - The two-color halftoning algorithms truncated when computing the
  179. halftone level, rather than rounding it.
  180. *    - If a path being filled had line segments that fell entirely to
  181. the right of the clipping region, part of the path might not be filled.
  182.     - The optimized code for 24-bit color didn't ensure properly that
  183. 32-bit accesses would be aligned appropriately.
  184.     - The miter join check had gotten reversed somewhere along the way.
  185. *    - Because x and y were interchanged in the miter check computation,
  186. in some situations the check was inverted.  (This is a very old bug!)
  187.     - It was believed that strokepath didn't work with dashed lines;
  188. the problem appears to have been an incorrect testing program.
  189.  
  190. Adds all function prototypes needed to pacify strict compilers.
  191.  
  192. Changes fixed2float so it doesn't cast the result to float, and removes
  193. fixed2double.  This produces slightly more accurate results in many places,
  194. and may even be faster (for FPUs that normally generate double rather than
  195. single precision results).
  196.  
  197. Version 2.9.9-beta (6/23/94)
  198. ==================
  199.  
  200. Documentation
  201. -------------
  202.  
  203. Puts a pointer to devs.mak in the section of use.doc that talks about
  204. MS-DOS displays.
  205.  
  206. Platforms
  207. ---------
  208.  
  209. Fixes bugs:
  210.     - The %pipe% IODevice was omitted on System V platforms.
  211.     - The AXP VMS build script needed /NESTED_INCLUDE=PRIMARY in
  212. CC_QUAL to work around a bug in the DEC C compiler.
  213.  
  214. Fonts
  215. -----
  216.  
  217. Fixes bugs:
  218.     - gs_lev2.ps redefined .loadFontmap incorrectly.
  219.  
  220. Interpreter
  221. -----------
  222.  
  223. Fixes bugs:
  224.     - stream_compact used memcpy even though the source and destination
  225. might overlap.
  226.     - filter applied to a closed file could cause a crash.
  227.  
  228. Library
  229. -------
  230.  
  231. Fixes bugs:
  232.     - putdeviceparams to a printer didn't close and reopen the device
  233. if only the page size or resolution was changed.
  234.  
  235. Version 2.9.8 (6/20/94)
  236. =============
  237.  
  238. This is the first version that claims to be a full Level 2 implementation.
  239. It was distributed to satisfy a contractual requirement.
  240.  
  241. Documentation
  242. -------------
  243.  
  244. In make.doc:
  245.     - Adds a reference to the generic System V section at the end of
  246. the SCO section.
  247.     - Notes that DEC OSF/1 systems may require changing the name of the
  248. install program to installbsd.
  249.  
  250. Updates drivers.doc to reflect the change from "properties" to
  251. "parameters".
  252.  
  253. Updates the Aladdin Enterprises Free Public License to version 1.
  254.  
  255. In language.doc, notes that certain device parameters will be phased out.
  256.  
  257. Procedures
  258. ----------
  259.  
  260. Fixes bugs:
  261.     - The file aa.ps was included in the distribution by mistake.
  262.  
  263. Notes in the Unix makefiles that X11R6 probably needs SM and ICE added to
  264. XLIBS.
  265.  
  266. Utilities
  267. ---------
  268.  
  269. Fixes bugs:
  270.     - viewjpeg.ps used a non-existent file as its example.
  271.     - A temporary string in wrfont.ps was allocated too small.
  272.  
  273. Upgrades font2c.ps so it will handle (simple) Type 0 fonts as well as Type
  274. 1.
  275.  
  276. Drivers
  277. -------
  278.  
  279. Fixes bugs:
  280.     - The TIFF drivers didn't byte-align each scan line.
  281.     - gdevtfax.c applied & to an array member of a structure.
  282.  
  283. Changes the param_list interface slightly: Implementations of the
  284. put_params driver procedure should now use param_signal_error to report
  285. errors, and should not give up at the first error.  (Even though this is a
  286. non-backward-compatible change, old implementations will continue to work;
  287. they just won't deliver complete results to the setpagedevice Policies
  288. machinery.)
  289.  
  290. Platforms
  291. ---------
  292.  
  293. Fixes bugs:
  294.     - Removes the time zone adjustment from gp_get_clock in gp_unix.c,
  295. since the value returned by all Unix systems is bogus.
  296.     - The DV/X makefile still included the dfaxhigh and dfaxlow drivers.
  297.     - gssetmod.com (VMS command file) didn't work properly if the
  298. argument list was empty.
  299.     - vms.mak, vms-axp.mak, and modules.lis hadn't been updated to
  300. reflect changes in 2.9.7.
  301.     - The MS Windows version wouldn't link (overflowed the 64K primary
  302. data segment).
  303.  
  304. Fonts
  305. -----
  306.  
  307. Makes the font substitution algorithm somewhat more intelligent.
  308.  
  309. Interpreter
  310. -----------
  311.  
  312. Fixes bugs:
  313.     - Enumerating the pointers of a zero-length array of structures
  314. caused a divide by zero.
  315.     - iref.h didn't protect itself against multiple inclusion.
  316.     - The CCITTFaxEncode filter didn't byte-align the final
  317. end-of-block code if EndOfBlock and EncodedByteAlign were both true.
  318.     - make_initial_dict in iinit.c used `name' as a formal parameter
  319. name, which some compilers believe conflicts with a typedef.
  320.     - Not all internal operators had registered names.
  321.     - The GC used memcpy, rather than bytes_copy, when compacting
  322. objects, even though the source and destination might overlap.
  323.     - When debugging was enabled, gc_string_mark could give a spurious
  324. error indication.
  325.     - vmstatus returned too small a value for the maximum VM.
  326.     - The scanner could get into a loop when reading a radix-85 string.
  327.     - The GC could get into a state where it was called after every
  328. allocation (because of the patch setting global = true in ireclaim).
  329.     - The general path filling algorithm didn't skip regions that were
  330. completely outside the clipping box.
  331.     - The gs_screen_enum structure contained a pointer (porder) that
  332. pointed into the middle of a structure, confusing the GC.
  333.  
  334. Implements the BitmapWidths flag in fonts.  The default of false means that
  335. we use scalable widths even with xfonts.
  336.  
  337. Changes the Generic resource category so that ResourceFileName is optional.
  338.  
  339. Changes the .getdeviceparams operator so that it takes an optional
  340. dictionary giving the set of keys whose values are wanted.  Changes the
  341. .putdeviceparams operator so that it takes an optional policy dictionary
  342. specifying the action to be taken on errors, and returns a list of keys and
  343. errors if it fails, rather than causing an error.  These are
  344. non-backward-compatible changes, but ordinary programs do not use these
  345. operators.
  346.  
  347. Changes the names of some internal operators and procedures by adding
  348. a . to the beginning:
  349.     currenttime
  350.     devicename
  351.  
  352. Implements currentpagedevice, and a small subset of setpagedevice.  Only
  353. the following keys in the page device dictionary are known to the current
  354. implementation, and the ones marked with * are not actually processed:
  355.     PageSize
  356.     InputAttributes
  357.     MediaColor, MediaWeight, MediaType, InsertSheet
  358.       (for InputAttributes matching only)
  359.     *ImagingBBox
  360.     OutputAttributes
  361.     OutputType
  362.       (for OutputAttributes matching only)
  363.     NumCopies
  364.     HWResolution
  365.     *Margins
  366.     *Orientation (for all devices, not just roll devices)
  367.     Policies
  368.     Install
  369.     BeginPage
  370.     EndPage
  371. Does not implement:
  372.     - Updating InputAttributes or OutputAttributes by sensing the state
  373.       of the device;
  374.     - Retrying media matching after an initial failure;
  375.     - Automatic handling of portrait vs. landscape page size;
  376.     - Recording the CTM after Install as the one to be used for
  377.       defaultmatrix, initmatrix, and initgraphics.
  378. Also, media matching is normally disabled (with InputAttributes = null)
  379. for all devices.  ****** We had to disable setpagedevice just before
  380. shipping this release, because of interactions with the older device
  381. handling machinery that we could not fix in the time available.
  382.  
  383. Library
  384. -------
  385.  
  386. Fixes bugs:
  387.     - 24-bit color (mem_true24_fill_rectangle and _copy_mono) had
  388. algorithm bugs.
  389.     - A complex conditional expression in gx_render_gray wouldn't
  390. compile properly with the DECStation 3100 Ultrix 4.3 compiler.
  391.     - The GC routines for gx_device_clip didn't handle the case where
  392. the 'current' pointer pointed to list.single.
  393.     - gx_add_char_bits used memcpy, rather than bytes_copy, for
  394. compressing character bitmaps, even though the source and destination might
  395. overlap.
  396.     - Some compilers require the definition of st_gstate_contents to
  397. precede the definitions of the GC procedures.
  398.     - Filling a large rectangle (more than 1K of bitmap) with a colored
  399. halftone overwrote random areas of the stack.
  400.  
  401. Changes gs_setcachedevice[2] to take a pointer to an array of floats,
  402. rather than 6 or 10 individual floats.  THIS IS A NON-BACKWARD-COMPATIBLE
  403. CHANGE.
  404.  
  405. Implements the BitmapWidths flag in fonts.
  406.  
  407. Version 2.9.7-beta (6/5/94)
  408. ==================
  409.  
  410. Yet another pre-3.0 beta.  The main features are a fairly reliable garbage
  411. collector, and function prototypes almost everywhere they are needed.
  412.  
  413. Documentation
  414. -------------
  415.  
  416. Fixes bugs:
  417.     - The comment at the beginning of the zfindlibfile procedure was
  418. incorrect.
  419.  
  420. Replaces the GNU License (the COPYING file) with version 0 of the new
  421. Aladdin Enterprises Free Public License (the PUBLIC file).
  422.  
  423. Procedures
  424. ----------
  425.  
  426. Fixes bugs:
  427.     - The definition of cmykread.dev in gs.mak was incorrect (it
  428. modified color.dev).
  429.  
  430. Adds the ability to specify a value for FONTPATH on the command line
  431. (-sFONTPATH=), overriding GS_FONTPATH.
  432.  
  433. Replaces the -oper2 configuration resource type with the ability to specify
  434. in the op_def list the dictionary in which operators will be defined.  (See
  435. opdef.h for more details.)  This is an internal change only.
  436.  
  437. Utilities
  438. ---------
  439.  
  440. Fixes bugs:
  441.     - viewgif.ps got an error on interlaced GIF files whose height
  442. wasn't a multiple of 8.
  443.  
  444. Changes traceop.ps so it stores the traced operator in the same dictionary
  445. where the operator is currently defined, if possible.
  446.  
  447. Drivers
  448. -------
  449.  
  450. Fixes bugs:
  451.     - The new G3 fax drivers crashed on page widths greater than 2623
  452. (40 * 64 + 63) pixels.  (We fixed this by disallowing page widths greater
  453. than approximately twice this.)
  454.     - The 24-bit PCX driver had some debugging code accidentally left
  455. in it that produced large volumes of useless console output.
  456.  
  457. Removes the previous (Leffler) TIFF/F driver and the TruFax driver.
  458.  
  459. Platforms
  460. ---------
  461.  
  462. Fixes bugs:
  463.     - time_.h, gp_unix.c, and gp_sysv.c didn't do the right thing on
  464. SVR4 platforms, where gettimeofday only takes 1 argument.
  465.     - The final linking command on Turbo C platforms didn't specify the
  466. COMPDIR directory for the linker.
  467.  
  468. Fonts
  469. -----
  470.  
  471. Changes the standard Fontmap to use the URW contributed fonts as
  472. work-alikes for Helvetica and Times Roman.
  473.  
  474. Interpreter
  475. -----------
  476.  
  477. Fixes bugs:
  478.     - The garbage collector wasn't in a consistent state.
  479.     - In Level 2 mode, statusdict was allocated in global VM rather
  480. than local VM.
  481.     - resourceforall gave an error on the built-in categories such as
  482. Filter.
  483.     - The file searching algorithm didn't check the current directory
  484. first.
  485.     - When opening a file failed, it didn't return a different error
  486. depending on the problem.
  487.     - The CCITTFaxEncode filter crashed on widths larger than 2623 (64
  488. * 40 + 63) pixels.  (We fixed this by disallowing page widths greater than
  489. approximately twice this.)
  490.     - The .type1getsbw operator gave an invalidfont error if a
  491. CharString started with anything other than a [h]sbw.  (Adobe's published
  492. specs say this is invalid, but some Adobe MultiMaster fonts start with a
  493. callsubr and/or a callothersubr.)
  494.     - When printing out the stack with == after an error, the error
  495. handler got a repeated (and ultimately fatal) typecheck error if it
  496. encountered an object of non-standard type.
  497.     - The token operator could incorrectly attempt to free a structure
  498. on the stack if it encountered an input buffer boundary.
  499.     - string_to_ref didn't correctly set the a_local flag in the string
  500. object it created.
  501.     - If the -c switch was the last switch on the command line,
  502. Ghostscript always exited without going into interactive mode.
  503.     - copy didn't check for errors when copying a dictionary.
  504.  
  505. Makes many minor changes (mostly adding prototypes) to reduce error and
  506. warning messages from gcc and other strict compilers.
  507.  
  508. Adds files containing the 4 predefined PDF encodings (MacRoman, MacExpert,
  509. WinAnsi, and PDFDoc).
  510.  
  511. Library
  512. -------
  513.  
  514. Fixes bugs:
  515.     - image_bbox in gxccman.c could produce a division by 0 if a
  516. 0-width character was being entered into the cache.
  517.     - gx_image_cached_char incorrectly specified a scale of 2x2 rather
  518. than 1x1 if it had to read bits from an xfont.
  519.     - Stale pointers in the halftone cache weren't cleared properly by
  520. a restore.  (We fixed this by making grestoreall clear the halftone cache.)
  521.     - setdash used gs_malloc, rather than the current allocator, for
  522. allocating the dash pattern.
  523.     - If one attempted to fill a very wide region with a colored
  524. halftone, gx_dc_ht_colored_fill_rectangle would loop indefinitely.
  525.     - The container_offset in clipping devices was set incorrectly,
  526. causing the garbage collector to mangle pointers.
  527.  
  528. Changes the fopen routine in IODevices so that it can return an arbitrary
  529. error code, rather than simply succeeding or failing.  THIS IS A
  530. NON-BACKWARD-COMPATIBLE CHANGE.  It only affects IODevice implementations,
  531. of which there are very few.  (It doesn't affect ordinary device drivers.)
  532.  
  533. Changes the char_metrics xfont procedure so it returns the width as
  534. floating point numbers rather than integers.  THIS IS A
  535. NON-BACKWARD-COMPATIBLE CHANGE.  It only affects xfont implementations, of
  536. which there are very few.
  537.  
  538. Makes many minor changes (mostly adding prototypes) to reduce error and
  539. warning messages from gcc and other strict compilers.
  540.  
  541. Version 2.9.6-beta (5/23/94, not distributed to the public)
  542. ==================
  543.  
  544. This, too, was supposed to be the last beta release for public release 3.0.
  545. It was created primarily for a user who desperately needed a Level 1 system
  546. that would run properly on a 64-bit hardware architecture.  The garbage
  547. collector is badly broken (it's in the middle of an architectural change);
  548. setpagedevice is still not implemented.
  549.  
  550. Documentation
  551. -------------
  552.  
  553. Documents the standard location of Type 1 fonts on AIX.
  554.  
  555. Changes the last few mentions of Ghostview for Microsoft Windows to GSview
  556. for Windows.
  557.  
  558. Notes that Solaris 2.n provides the X11 header files in a different place.
  559.  
  560. Changes README to reflect the differentiation between Aladdin Ghostscript
  561. and GNU Ghostscript.
  562.  
  563. Procedures
  564. ----------
  565.  
  566. Fixes bugs:
  567.     - The compilation rules for the modules that call the IJG library
  568. used -Ijpeg rather than -I$(JPEGSRC).
  569.     - The rule for gslib.dev omitted echogs$(XE) as a prerequisite.
  570.  
  571. Makes it possible to define the values of buildtime, copyright, revision,
  572. revisiondate, and serialnumber in the makefile.
  573.  
  574. Utilities
  575. ---------
  576.  
  577. Fixes bugs:
  578.     - The viewgif.ps utility didn't handle local color tables.
  579.  
  580. Updates ps2ai.ps to version 1.81.
  581.  
  582. Drivers
  583. -------
  584.  
  585. Fixes bugs:
  586.     - The TIFF and fax devices used some identical names, causing
  587. linker complaints.
  588.     - The bj10e/bj200 driver inadvertently disabled the sheet feeder.
  589. (The change may not actually fix this bug, since we don't have either of
  590. these printers with a sheet feeder to test it on.)
  591.     - The 'bit' device didn't map colors to pixel values correctly.
  592.     - The monochrome PCL driver didn't work around the fact that the
  593. Canon LBP4i printer didn't clear its seed row correctly.
  594.  
  595. Adds new drivers:
  596.     - A user-contributed driver for the H-P DesignJet 650C.
  597.     - A user-contributed driver for the Canon LIPS III printer.
  598.     - A completely new tiffg3 driver with one based on the new, fast
  599. faxg3 code.  This driver does not include any external code, and carries an
  600. Aladdin copyright.
  601.     - A tiffg4 driver, also based on the fast CCITT filter code.
  602.  
  603. Removes the tiffg3x driver that appeared briefly in 2.9.5, and renames the
  604. previous (Leffler) tiffg3 driver as tiffg3x.
  605.  
  606. Adds support for A0, A1, and A2 paper sizes to PCL drivers.
  607.  
  608. Changes all the names involving "props" to "params", for consistency with
  609. the header files, some other internal interfaces, and Adobe's terminology.
  610. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  However, it only affects devices
  611. that implement their own get_props and put_props procedures, of which there
  612. aren't very many.
  613.  
  614. Platforms
  615. ---------
  616.  
  617. Fixes bugs:
  618.     - The DV/X makefile used X11 rather than X for the X11 library name.
  619.     - The DV/X makefile incorrectly included the PC display drivers.
  620.     - The DV/X makefile omitted gp_dosfs.$(OBJ) from the list of
  621. platform-specific files.
  622.     - The DV/X makefile used : rather than ; for separating directory
  623. names in GS_LIB_DEFAULT.
  624.     - x_.h omitted a needed alias for XtAppSetFallbackResources.
  625.     - The makefile entry for System V Unix systems didn't include
  626. gp_unifn.$(OBJ).
  627.     - The comment before LDFLAGS in the gcc makefiles incorrectly
  628. suggested using the -x switch on Ultrix platforms.
  629.     - The forward declaration of quant_params in zfdct.c upset the Sun
  630. compiler because it declared a parameter as float rather than floatp.
  631. *    - The Microsoft C compiler, like the Borland C compilers, only
  632. compares the offset part of segmented pointers.
  633.  
  634. Fonts
  635. -----
  636.  
  637. Adds a fontmap suitable for use with Adobe Type Basics.
  638.  
  639. Interpreter
  640. -----------
  641.  
  642. Fixes bugs:
  643.     - The STACK_LOOP_BEGIN macro in istack.h didn't work correctly on
  644. segmented systems.
  645.     - The end_phase procedure in igc.c didn't work correctly on
  646. segmented systems.
  647.     - Indexed color spaces didn't mark their base space properly when
  648. garbage collecting.
  649.     - The garbage collector didn't work on segmented systems, because
  650. it smashed the lsize field of large objects with mark/reloc information.
  651.     - Some structures didn't have correct associated GC procedures:
  652. gs_indexed_map, gs_client_pattern, gs_pattern_instance.
  653.     - restore could free names or stack segments that were still
  654. referenced.
  655. *    - If a packed object caused an error, the error object could be set
  656. to garbage rather than the correct object.
  657. *    - Badly designed error handlers which use $error for temporary
  658. storage could cause a dictfull error.
  659.     - Some compilers objected to the use of "dict" as a variable name
  660. in a scope where it was defined as a type.
  661.     - IODevices were declared const and non-const inconsistently.
  662.     - setpagedevice popped one object too many off the stack if the
  663. request included any subdictionaries that needed to be merged.
  664.     - More garbage collector bugs were fixed.
  665.     - If the current stack block was empty, Level 2 restore would give
  666. a spurious typecheck error.
  667.     - The CCITTFaxEncode filter could get confused if it emptied the
  668. input and filled the output at the same time.
  669.     - The CCITTFaxEncode filter could insert an extra EOL if it had to
  670. suspend at certain times.
  671.     - The new parser for literal strings (as of 2.9.5) could mis-count
  672. internal parentheses if a parenthesis caused the internal buffer collecting
  673. the string to overflow.
  674.     - If the current stack block had fewer than 3 elements,
  675. .type1addpath could report a spurious typecheck error.
  676.     - Text rendering operations (show, stringwidth, etc.) caused a
  677. crash if the current color was a Pattern that hadn't already been
  678. rasterized.
  679.     - If a program did a grestore when the graphics state stack was
  680. empty, the graphics state was initialized to unexpected (and, in some
  681. cases, invalid) values.
  682.     - pathforall could cause a bogus stackoverflow if it overflowed the
  683. current stack block.
  684.     - Closing an encoding filter with a procedure as target left the
  685. filter on the stack.
  686. *    - The outer loop in dict_lookup() could cause an addressing fault
  687. on segmented machines when looking up Level 2 operators, because the offset
  688. could get decremented past 0.
  689.     - There was an = instead of an == in a test in scanner_reloc_ptrs.
  690.     - The call on gs_reloc_refs in sproc_reloc_ptrs in zfproc.c omitted
  691. the last (gcst) argument.
  692.  
  693. (Re-)implements the 2-D case of CCITTFaxEncode, and fixes a couple of bugs
  694. in it.
  695.  
  696. Adds DiffEncode and DiffDecode filters that implement color prediction for
  697. the PDF variant of the LZWDecode filter.
  698.  
  699. Changes the specification of .oserrorstring to be similar to getenv,
  700. where, etc.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE; however, no
  701. user-written code should be using .oserrorstring.
  702.  
  703. Adds oversampling for better character rasterizing.
  704.  
  705. Library
  706. -------
  707.  
  708. Fixes bugs:
  709.     - gx_dc_ht_colored_fill_rectangle gave a compiler warning because
  710. of a problem with const pointers.
  711.     - dfmul2fixed_vars (in gxfixed.h) omitted the & before vda on
  712. big-endian platforms, causing compilation errors.
  713.     - IODevices were declared const and non-const inconsistently.
  714.     - The Type 1 rasterizer never enabled overshoot suppression.
  715.     - stroke didn't fatten the line properly if stroke adjustment was
  716. enabled, or if the line was horizontal or vertical.
  717. *    - The clipping test for characters was too strict by almost 1
  718. pixel, leading to unnecessary clipping of text at the edge of the clipping
  719. box.
  720. *    - The initial clipping box was computed incorrectly for devices
  721. whose initial transformation matrix included a rotation.
  722.  
  723. Changed the implementation of clipping lists and show enumerators to use
  724. separate objects rather than embedded objects, to pacify the GC.  (This is
  725. an internal change, not visible at the PostScript or API level.)
  726.  
  727. Makes the character cache trim off left and right blank areas, as well as
  728. top and bottom.  (Internal change.)
  729.  
  730. Adds oversampling for better character rasterizing.
  731.  
  732. Version 2.9.5-beta (4/11/94)
  733. ==================
  734.  
  735. This was supposed to be the last beta release before 3.0, but it won't be.
  736. The only known major defects are the unreliable garbage collector, and the
  737. dummy implementation of setpagedevice/currentpagedevice.
  738.  
  739. Documentation
  740. -------------
  741.  
  742. Fixes bugs:
  743.     - The file commnew.doc didn't belong in the fileset.
  744.  
  745. Notes in the makefiles that SVR4 systems may need to set EXTRALIBS=-lnsl.
  746.  
  747. Adds a user-contributed `man' page for the ps2epsi utility.
  748.  
  749. Procedures
  750. ----------
  751.  
  752. Fixes bugs:
  753.     - The IJG files didn't compile properly by themselves, because they
  754. didn't have $(AK) in their dependency list.
  755.  
  756. Changes back the handling of files named on the command line, so that they
  757. are first sought in the current directory, and if that fails, use the
  758. search path.  (2.9.4-beta changed things so that files on the command line
  759. did not use the search path, because as of that version, the search path
  760. doesn't necessarily include the current directory.  I consider the "check
  761. the current directory and then use the search path" rule, which is the
  762. MS-DOS standard and was used in Ghostscript prior to 2.9.4, a serious
  763. mistake, since it is one of the best-known security holes in Unix and can
  764. also produce confusing and unexpected results depending on the current
  765. directory; I would much rather have a clear distinction between
  766. user-specified files, which should not use any path searching, and system
  767. files, that only use the defined search path.  However, as of this moment,
  768. users seem to want the convenience at the expense of insecurity and
  769. confusion.)
  770.  
  771. Adds '.' to the beginning of the search path for MS-DOS platforms, to
  772. conform to the usual MS-DOS file searching convention.
  773.  
  774. Adds a -c ("code") switch, which interprets following arguments (until the
  775. next switch) as PostScript tokens.
  776.  
  777. Changes the handling of FEATURE_DEVS so that either level1.dev or
  778. level2.dev must normally be selected.  THIS IS A NON-BACKWARD-COMPATIBLE
  779. CHANGE for Level 1 systems, which formerly set FEATURE_DEVS to an empty
  780. definition.
  781.  
  782. Utilities
  783. ---------
  784.  
  785. Fixes bugs:
  786.     - bench.ps didn't switch back to local VM properly before running
  787. the program being benchmarked.
  788.  
  789. Adds a ppmsetpagesize command to the pstoppm utility.
  790.  
  791. Drivers
  792. -------
  793.  
  794. Fixes bugs:
  795.     - The PCX and GIF drivers used an incorrect algorithm for computing
  796. the blue component of the color palette, which could cause colors to come
  797. out with not quite enough blue.
  798.     - The SPARCprinter driver wouldn't compile with non-ANSI compilers.
  799.  
  800. Adds new drivers:
  801.     - A user-contributed driver for DEC sixel displays like the VT240
  802. (sxlcrt, in gdevln03.c, which has a FSF copyright.)
  803.     - A much larger and supposedly faster version of the TIFF/F driver
  804. (tiffg3x, in gdevtifx.c), contributed by a user.  This has the same
  805. copyright as the TIFF/F driver (gdevtiff.c).
  806.     - A driver (faxg3, in gdevfax.c) that produces plain Group 3 fax
  807. output with no header, using the CCITTFaxEncode filter to do the work.
  808. (This is around 2.5-3 times as fast as the other fax drivers distributed
  809. with Ghostscript.)
  810.     - A user-contributed driver for the Mitsubishi CP50 color printer.
  811.  
  812. Changes the `bit' driver so one can set the Colors and *Values properties.
  813.  
  814. Makes the color mapping for PC displays, PCX files, and GIF files identical
  815. (they differed slightly before).
  816.  
  817. Platforms
  818. ---------
  819.  
  820. Fixes bugs:
  821.     - VMS used DISPLAY rather than DECW$DISPLAY to get the display name
  822. if opening the display failed.
  823.     - Many minor bugs relating to OS/2 and Win32 were fixed.
  824.     - On Unix and DV/X platforms, the install script didn't mkdir
  825. $(gsdir), and didn't mkdir the intermediate directory for the man page.
  826.     - On BSD and UTek platforms, the declaration of memset in
  827. memory_.h, and the definition in gsmisc.c, conflicted with the ANSI
  828. declaration.
  829.     - One of the SPARC compilers compiled the intersection computation
  830. in arc_either (gspath.c) incorrectly.
  831.     - The temporary file names created under OS/2 could exceed the 8.3
  832. length limit.
  833.  
  834. Interpreter
  835. -----------
  836.  
  837. Fixes bugs:
  838.     - The test files for the IJG library had been damaged by EOL
  839. conversion.
  840.     - The garbage collector didn't mark some of the most recently
  841. created names.
  842.     - The interpreter would sometimes report a typecheck instead of a
  843. stackunderflow.
  844.     - If aload didn't have enough room on the stack, it would report a
  845. rangecheck rather than a stackoverflow.
  846.     - zcontext wouldn't compile, because it hadn't been updated to the
  847. new GC interfaces.
  848.     - The definition of private_st_stream_proc_state in ifilter.h ended
  849. with a semicolon, which upset some compilers.
  850.     - load didn't check to make sure that the dictionaries it examined
  851. had read access.
  852.     - cvrs didn't handle negative numbers in radix 2 or 3 properly.
  853.     - The allocator could become confused if it was asked to allocate a
  854. large array.
  855.     - readline gave an ioerror rather than a rangecheck if it
  856. overflowed the string.
  857.     - The allocator didn't free packed arrays properly.
  858.     - The allocator's check for LIFO freeing of arrays was off by 1, so
  859. it never succeeded.
  860.     - The undercolor removal and black generation procedures weren't
  861. initialized properly.
  862.     - If the interpreter couldn't find gs_init.ps, it returned a random
  863. exit code.
  864.     - If an operator expected a procedure and didn't get one, it
  865. sometimes gave an invalidaccess rather than a typecheck.
  866.     - Unix file enumeration often did the wrong thing if there were
  867. directories in the pattern.
  868.     - The ASCIIHexDecode filter read an extra character after the
  869. terminating >.
  870.     - scalefont didn't fill in ScaleMatrix properly.
  871.     - The CCITTFaxEncode filter crashed if the width of the page wasn't
  872. a multiple of 8 bits.
  873.     - The error printing code used .languagelevel, which wasn't defined
  874. in Level 1 configurations.
  875.     - setpagedevice didn't pop its argument.
  876.     - Definitions in statusdict didn't change according to the current
  877. language level.
  878.     - Separation color spaces didn't allow strings as color space names.
  879.     - Due to a bug in chunk_locate_ptr, the garbage collector sometimes
  880. decided incorrectly that a pointer was pointing outside collectable space.
  881.     - (Many other garbage collector bugs were fixed.)
  882.  
  883. Implements additional Level 2 features:
  884.     - Garbage collection for strings.
  885.     - Expandable operand and dictionary stacks, and the ability to set
  886.     the maximum size of these stacks.
  887.     - Additional user and system parameters.  The following are dummies:
  888.     AccurateScreens, JobName, JobTimeout, WaitTimeout.
  889.     - Procedure-based filters usable with cvx/exec and token.
  890.     - Separation color spaces (always using the alternate space).
  891.     (These were theoretically implemented in version 2.6, but they were
  892.     never tested and were actually missing most of the implementation.)
  893.     - VMThreshold and VMReclaim for invoking GC automatically.
  894.  
  895. Adds a hook in iscan.c for parsing DSC comments.
  896.  
  897. Adds encoding and decoding filters for the BCP and TBCP protocols.  These
  898. are not fully implemented yet:
  899.     - The interrupt and status request characters are ignored on input,
  900.     and never generated on output;
  901.     - The TBCP encoder doesn't emit the start-of-protocol string;
  902.     - The TBCP decoder doesn't recognize the end-of-protocol string.
  903.  
  904. Factors out Type 1 font capability as a separate feature.
  905.  
  906. Changes the names of some files:
  907.     packed.h to ipacked.h;
  908.     bnum.h to ibnum.h.
  909.  
  910. Changes the name of the value.index member of a ref to value.boolval.
  911. (Internal change only.)
  912.  
  913. Library
  914. -------
  915.  
  916. Fixes bugs:
  917.     - The definition of RELOC_PTRS_BEGIN in gsstruct.h wouldn't compile
  918. properly with non-ANSI compilers.
  919.     - The JPEG library wouldn't compile properly with non-ANSI compilers.
  920. *    - The platform font machinery gave up too easily in some cases.
  921.     - CMYK devices needing halftoning converted the CMYK color to RGB.
  922.     - The debugging code in arc_add (gspath.c) didn't print the output
  923. values correctly.
  924.  
  925. Factors out Type 1 font capability as a separate feature.
  926.  
  927. Version 2.9.4-beta (2/19/94)
  928. ==================
  929.  
  930. Procedures
  931. ----------
  932.  
  933. Changes Ghostscript's path searching algorithm so that it does not
  934. automatically look in the current directory first.  (The former algorithm
  935. was more MS-DOS-like; the new one is more Unix-like.)  If you want to
  936. include the current directory, you must include '.' in the search path.
  937. THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
  938.  
  939. Adds two new resource types for genconf.c:
  940.     - -header filexxx.h adds #include "filexxx.h" to gconfig.h.
  941.     - -libpath dir adds dir to the list of library search paths.
  942.  
  943. Utilities
  944. ---------
  945.  
  946. Fixes bugs:
  947.     - impath.ps (used by bdftops) computed the starting X coordinate
  948. incorrectly, typically causing characters to be displaced slightly to the
  949. right.
  950.     - pstoppm.ps didn't handle local and global VM properly.
  951.  
  952. Adds a ps2ai.ps utility, contributed by a user, for converting arbitrary
  953. PostScript files into a form compatible with Adobe Illustrator.
  954.  
  955. Drivers
  956. -------
  957.  
  958. Adds new drivers:
  959.     - A user-contributed driver for Imagen Impress laser printers.
  960.     - A user-contributed driver for the DEC LA75plus printer.
  961.  
  962. Platforms
  963. ---------
  964.  
  965. Under OS/2, adds the ability to keep Ghostscript in memory for a
  966. specified number of minutes.
  967.  
  968. Adds support for Win32 and Win32s.
  969.  
  970. Changes the MS Windows platform font interface so that it does not attempt
  971. to render fonts at sizes smaller than 6 pixels.  Changes the X Windows
  972. interface, which already did this for 4-point and smaller fonts, to also
  973. use a lower limit of 6 pixels.  Also changes the X Windows platform font
  974. machinery so it does not render fonts at sizes larger than 36 pixels: at
  975. large sizes, Ghostscript does a perfectly good job, and some X font servers
  976. rasterize the entire font and lock up the entire window system while doing
  977. so.
  978.  
  979. Interpreter
  980. -----------
  981.  
  982. Fixes bugs:
  983.     - currentdash always returned a new array of reals, rather than the
  984. actual argument of setdash.
  985.     - Strings in binary object sequences read in as integers.
  986.     - Because of a bug in chunk_locate_ptr, some large objects didn't
  987. get freed properly.
  988.     - If an error occurred while processing an image, Ghostscript would
  989. attempt to free random blocks of storage.
  990.     - Input filters discarded trailing data, rather than filling it out
  991. with zeros.  (This is now fixed for ASCIIHexDecode and ASCII85Decode; it's
  992. not clear what other filters it should affect.)
  993.     - The ASCII85Encode filter produced garbage output for the final
  994. 1-4 bytes before EOD.
  995. *    - The TIFF output driver produced incorrect output for the second
  996. and subsequent pages if the output was being produced on multiple files.
  997. *    - The default handleerror did a 'stop', which was not correct.
  998.     - gpcheck.h converted all positive return codes to 0 if interrupt
  999. checking was enabled.
  1000.     - Images with multiple data sources didn't work.
  1001.     - Images with 12-bit sample values didn't work.
  1002.     - Images with a file as the data source read additional data beyond
  1003. what was required.
  1004.     - 2 vmreclaim worked (pretty much), but 1 vmreclaim didn't.
  1005.     - If %lineedit was opened multiple times, characters from later
  1006. openings overwrote characters from earlier ones.
  1007.     - token returned garbage for the "remaining string" result when
  1008. reading from a string, if it actually read all of the string.  (New bug in
  1009. 2.9.2, probably.)
  1010.  
  1011. Implements additional Level 2 features:
  1012.     - DCTEncode and DCTDecode filters.
  1013.     - Filters with procedures as the data source or target.
  1014.     (Except for token and cvx/exec.)
  1015.     - Garbage collection for names.
  1016.  
  1017. Changes the error printout so that strings are always truncated at 200
  1018. characters.
  1019.  
  1020. For Level 2 systems, changes the initial setting of the object format
  1021. parameter from 0 to an appropriate non-zero value.
  1022.  
  1023. * Changes the .quit operator so that it takes two operands, an error object
  1024. and an error code; if the latter is negative, the interpreter returns this
  1025. as the error code, rather than e_Quit.
  1026.  
  1027. Makes StandardEncoding and ISOLatin1Encoding arrays, rather than packed
  1028. arrays, on large-memory systems, for compatibility with certain test
  1029. suites.  Changes .registerencoding to accept arrays as well as packed
  1030. arrays.
  1031.  
  1032. Library
  1033. -------
  1034.  
  1035. Fixes bugs:
  1036.     - Due to an error in cie_mult3, CIE-based colors were badly
  1037. mis-mapped.
  1038. *    - Very narrow (but not empty) rectangles would disappear.
  1039. *    - Small halftone cells could smash the next higher entry in the
  1040. halftone cache.
  1041.     - The orientation algorithm in gxstroke.c still interchanged
  1042. clockwise and counter-clockwise coordinate systems (after having been
  1043. "fixed" at least 3 times).
  1044.     - Stroking 1-pixel-wide lines shortened them, instead of
  1045. lengthening them, if non-butt caps were requested.
  1046.  
  1047. Refactors mem_mapped8_copy_mono because of limitations in the bcc32
  1048. compiler.
  1049.  
  1050. Version 2.9.3-beta (1/19/94)
  1051. ==================
  1052.  
  1053. This version was created for evaluation purposes for a few users who
  1054. needed Level 2 capability; it was never released to anyone else, even
  1055. beta testers.
  1056.  
  1057. Documentation
  1058. -------------
  1059.  
  1060. Fixes bugs:
  1061.     - The description of psview and xpsview was incorrect.
  1062.  
  1063. Procedures
  1064. ----------
  1065.  
  1066. Changes the installation directories for Unix and similar systems to put
  1067. Ghostscript data in $(datadir)/ghostscript/gs-NN.NN.NN rather than directly
  1068. in $(datadir)/ghostscript.  (Fonts still go in $(datadir)/ghostscript/fonts.)
  1069.  
  1070. Drivers
  1071. -------
  1072.  
  1073. Fixes bugs:
  1074.     - Some spaces were incorrectly replaced with tabs in the help
  1075. message in the 3B1 display driver.
  1076.     - The BMP driver wrote a spurious scan line at the beginning
  1077. of its output.
  1078.     - The monochrome PCX driver had the two palette elements
  1079. interchanged.
  1080.  
  1081. Adds new drivers:
  1082.     - A user-contributed driver for the Xerox XES printer format.  This
  1083. has a FSF copyright.
  1084.     - A user-contributed driver for the Epson AP3250 printer.  (This is
  1085. the same as the Stylus 800, with slightly different margins.)
  1086.     - A user-contributed driver for the DEC LA70 printer with some
  1087. algorithms for improving text at low resolutions.  This has a FSF
  1088. copyright.
  1089.     - A user-contributed driver for an intermediate-resolution mode
  1090. for 9-pin "Epson-compatible" printers.
  1091.  
  1092. Changes the name of the Stylus 800 driver from escp2 to st800.
  1093.  
  1094. Adds a compile-time flag to the Epson driver to cope with Panasonic 9-pin
  1095. printers, which sometimes have trouble mixing graphics and tabs.
  1096.  
  1097. Platforms
  1098. ---------
  1099.  
  1100. Fixes bugs:
  1101.     - The MS Windows driver (gp_mswin.c) referred to iodev.h rather
  1102. than gxiodev.h.
  1103.     - On Unix System V platforms, gp_unifs.c and gdevpipe.c were
  1104. incorrectly omitted from the link list.
  1105.     - (Some?) System V platforms don't have the S_ISDIR macro,
  1106. requiring a change in stat_.h.
  1107.     - The Unix `install' target didn't install gs_std_e.ps and
  1108. gs_iso_e.ps.
  1109.     - No MODULES.LIS file was provided for VMS.
  1110.  
  1111. Adds Desqview/X makefiles that actually work.
  1112.  
  1113. Documents the set of H-P-supplied patches needed to make H-P's
  1114. compilers process Ghostscript.
  1115.  
  1116. Changes the MS Windows driver so that if the user presses the Enter key
  1117. while the image window has the focus, the text window will be brought to
  1118. the top and made the active window.  This is useful when viewing a
  1119. multi-page document with Ghostscript.
  1120.  
  1121. Interpreter
  1122. -----------
  1123.  
  1124. Fixes bugs:
  1125.     - The definition of public_st_client_color() in gxccolor.h
  1126. included an extraneous semicolon.
  1127.     - The definition of private_st_AXD_state() in sfilter.h included an
  1128. extraneous semicolon.
  1129.     - saxx.c didn't include sfilter.h, which it needed for the
  1130. definition of private_st_AXD_state().
  1131.     - ialloc_struct failed to create a separate chunk if the structure
  1132. was very large.
  1133.     - setcolorspace didn't allocate the colorspace object in the same
  1134. VM space as the graphics state, causing problems when the colorspace was
  1135. freed.
  1136.     - In rare circumstances, currentfile could return an empty array
  1137. rather than a file.
  1138.     - Dictionary keys were always allocated in global VM.
  1139.     - If NOPLATFONTS was true, definefont didn't check whether the
  1140. dictionary was read-only before trying to insert an ExactSize key.
  1141.     - startjob could get an invalidaccess error, because serverdict was
  1142. allocated in global VM.
  1143.     - Using definefont with an already registered font created a
  1144. circular list structure.
  1145.     - If a PostScript procedure appeared as a CharString in a Type 1
  1146. font, it was always called with the character name, never the character
  1147. code.
  1148.     - The SubFileDecode filter didn't work with a non-empty EOD string
  1149. (went into an endless loop).  (Probably a new bug in 2.8.)
  1150.     - save/restore didn't properly restore the maxlength of a
  1151. dictionary, causing data to get smashed at random.  (New bug in 2.9.)
  1152.     - save didn't mark objects as old, so a nested restore had no
  1153. effect.  (New bug in 2.9.2.)
  1154.     - After returning from an OtherSubrs callback, op_type1_free
  1155. freed the saved interpreter state incorrectly.  (New bug in 2.7.)
  1156.     - Level 1 configurations didn't work because .makeoperator gave an
  1157. invalidaccess error.  (New bug in 2.9.2.)
  1158.     - ASCII85 string literals didn't work.  (Probably a new bug in 2.8.)
  1159.     - If the current global/local allocation mode was different at the
  1160. end of a file than at the beginning, an addressing fault could occur
  1161. (gs_unregister_root in gs_run_string).  (New bug in 2.9.2.)
  1162.     - After a setfileposition on a file open for reading,
  1163. fileposition would return an incorrect value, even though the stream
  1164. was actually repositioned properly.
  1165.  
  1166. Brings the dictionary unpacking code for the DCT filters into line with
  1167. Adobe Technical Note 5116, which describes the Picky parameter for
  1168. DCTDecode and the NoMarker, Resync, Blend, Picky, and Relax parameters for
  1169. DCTEncode.
  1170.  
  1171. Changes the .quit operator so that if given a negative argument, the
  1172. interpreter returns this as the error code, rather than e_Quit.
  1173.  
  1174. Changes the Ghostscript integer version number from 100P+10S+T to
  1175. 10000P+100S+T.
  1176.  
  1177. Changes the default halftone screen for high-resolution devices, both
  1178. black-and-white and color.
  1179.  
  1180. Library
  1181. -------
  1182.  
  1183. Fixes bugs:
  1184.     - The software floating multiply code used with USE_FPU=-1 only
  1185. worked on little-endian platforms.
  1186.     - Specifying a left side bearing to .type1addpath produced an
  1187. inappropriate offset.
  1188.  
  1189. Version 2.9.2-beta (1/2/94)
  1190. ==================
  1191.  
  1192. This version was distributed only to beta testers.  It adds a garbage
  1193. collector and full local and global VM support.  It is the first version
  1194. that sets languagelevel = 2, i.e., claims to be a Level 2 implementation.
  1195.  
  1196. Documentation
  1197. -------------
  1198.  
  1199. Fixes bugs:
  1200.     - make.doc still referred to use_* variables in gdevx.c, and
  1201. use.doc didn't explain the use* X resources.
  1202.  
  1203. Notes that -Olimit=1000 is needed to compile Ghostscript on AXP systems
  1204. under OSF/1 1.3.
  1205.  
  1206. Utilities
  1207. ---------
  1208.  
  1209. Fixes bugs:
  1210.     - viewgif.ps did not work with interlaced images.
  1211.     - font2c.ps omitted gsmemory.h from the #include list in compiled
  1212. fonts.
  1213.  
  1214. Drivers
  1215. -------
  1216.  
  1217. Fixes bugs:
  1218.     - The MS Windows driver hadn't been updated to work with the
  1219. new additions to the gx_device structure.
  1220.     - The BMP file driver wrote one scan line too many.
  1221.     - The cdj driver omitted an important cast to int in the error
  1222. diffusion code (FSdither macro).
  1223.  
  1224. Changes the SuperVGA drivers to recognize erasepage and reset the
  1225. color table, like the X driver.
  1226.  
  1227. Adds some fragmentary code to begin implementing the PostScript fax
  1228. extensions.
  1229.  
  1230. Platforms
  1231. ---------
  1232.  
  1233. Fixes bugs:
  1234.     - The procedure initializers for the MS Windows console I/O
  1235. were missing the new reset element.
  1236.     - The makefile entry in bcwin.mak used -fdev rather than -iodev.
  1237.     - The Borland C++ makefiles exceeded MS-DOS's line length limit if
  1238. the compiler files were in the standard Borland directory (BORLANDC).
  1239.     - Some procedures weren't declared with prototypes in gp_vms.c.
  1240.     - Some declarations had to be reordered to pacify the VAX compiler.
  1241.     - Under MS Windows, Ghostscript didn't automatically de-iconify the
  1242. text window to display messages on an error exit.
  1243.     - The Unix makefile rule for gconfig_.h used echogs rather than
  1244. ./echogs.
  1245.     - The Microsoft C makefile referred to an obsolete file gs.tr.
  1246.     - gp_unifs.c used strpbrk and strrchr, which some systems lack.
  1247.  
  1248. Updates the OS/2 code and documentation for compatibility with the current
  1249. Ghostscript version.
  1250.  
  1251. Fonts
  1252. -----
  1253.  
  1254. Fixes bugs:
  1255.     - The X11 .pfa fonts replaced their .gsf requirements in the
  1256. fontmap, but not distributed with the previous (beta) release.
  1257.  
  1258. Adds fontmaps appropriate for use with DEC Ultrix and OSF/1 systems.
  1259.  
  1260. Interpreter
  1261. -----------
  1262.  
  1263. Fixes bugs:
  1264.     - 4-value entries in the Metrics dictionary were interpreted with
  1265. the width and side bearing interchanged.
  1266.     - Objects large enough to require their own chunk were not freed
  1267. properly.
  1268.     - The GS_FONTPATH scanner didn't deal with the possibility that
  1269. opening a file might fail.
  1270.     - The interrupt and timeout errors incorrectly pushed an error
  1271. object on the operand stack.
  1272.     - imagemask gave an error if it was invoked with a dictionary
  1273. argument with a current color space with more than 1 parameter.
  1274.     - definefont insisted that a new font not have a FID entry.
  1275.     - Some places didn't cast char to byte when needed.
  1276.     - An extra element was left on the stack when substituting the
  1277. default font for a font whose file couldn't be found.
  1278.     - The CCITTFaxDecode filter didn't allow the dictionary to be
  1279. omitted.  (The Adobe documentation doesn't allow this, but Adobe
  1280. implementations do.)
  1281.     - When the input came from a pipe (`-') switch, opening a filter on
  1282. currentfile that required more than 1 input byte to make progress would
  1283. cause Ghostscript to hang (in sreadbuf).
  1284.     - The interpreter didn't call gs_set_lib_paths before executing a
  1285. compiled-in initialization file.
  1286.     - A stream could be closed more than once.  (New bug in 2.8.)
  1287.     - The LZW decoder produced incorrect output if a code string was
  1288. too long to fit into a single output buffer.  (New bug as of 2.8.)
  1289.  
  1290. Implements a special check in def to allow construction of systemdict,
  1291. which is stored in global VM but references dictionaries in local VM.
  1292.  
  1293. Implements additional Level 2 features:
  1294.     - %null% and %ram% IODevices.
  1295.     - startjob, exitserver.
  1296.     - Local and global VM (finish).
  1297.     - Garbage collection (for everything except names and strings).
  1298.  
  1299. Moves the procedures for selecting paper size from systemdict to userdict.
  1300.  
  1301. Sets languagelevel to 2 in Level 2 mode, since essentially all of
  1302. Level 2 is now implemented.
  1303.  
  1304. Factors out the Level 1 extended color facilities (CMYK color and
  1305. colorimage) as a separate configuration feature.
  1306.  
  1307. Adds some preliminary code to begin implementing the Adobe BCP and TBCP
  1308. communication protocols.
  1309.  
  1310. Changes the implementation of save and restore so that the bookkeeping
  1311. structures are allocated in the new area, not the old.  (This is an
  1312. internal change not visible at the PostScript level.)
  1313.  
  1314. Library
  1315. -------
  1316.  
  1317. Fixes bugs:
  1318.     - gdevprn used some preprocessor macros in formal argument
  1319. lists that ansi2knr couldn't handle.
  1320.     - pick_cell_size called gs_distance_transform with a 0 argument
  1321. that non-ANSI compilers didn't automatically promote to floating point.
  1322.     - gs_screen_init called hypot with integer arguments that
  1323. non-ANSI compilers didn't automatically promote to floating point.
  1324.     - Some places didn't cast char to byte when needed.
  1325.     - The vx/vy origin adjustment for WMode=1 wasn't implemented.
  1326.     - The pattern cache wasn't initialized properly.
  1327.     - Composite fonts didn't properly decode strings that started with
  1328. an escape sequence, which have a special (undocumented) decoding rule, and
  1329. also didn't properly decode strings with multiple consecutive escape
  1330. sequences.
  1331.  
  1332. Factors out the Level 1 extended color facilities (CMYK color and
  1333. colorimage) as a separate configuration feature.
  1334.  
  1335. Version 2.9.1-beta (12/7/93)
  1336. ==================
  1337.  
  1338. This version was distributed only to beta testers.
  1339.  
  1340. Utilities
  1341. ---------
  1342.  
  1343. Adds a viewgif.ps utility to view GIF files.  The current version does not
  1344. work with interlaced data, local color tables, or files containing more
  1345. than one image.
  1346.  
  1347. Interpreter
  1348. -----------
  1349.  
  1350. Fixes bugs:
  1351.     - putinterval and copy didn't do the right thing if the source and
  1352. destination were aliases for overlapping sections of the same array or
  1353. string.
  1354.     - The DCT filter stub didn't allow the dictionary to be omitted.
  1355. (The Adobe documentation doesn't allow this, but Adobe implementations
  1356. do.)
  1357.  
  1358. Adds an optional dictionary argument to the LZWDecode filter, containing
  1359. InitialCodeLength, FirstBitLowOrder, BlockData, and EarlyChange entries.
  1360. Setting these parameters appropriately allows reading (non-interlaced) GIF
  1361. data directly.
  1362.  
  1363. Library
  1364. -------
  1365.  
  1366. Fixes bugs:
  1367.     - setdash produced inverted output if the pattern had an odd
  1368. number of elements and the offset O had the property that L <= O mod
  1369. 2*L, where L was the sum of the pattern elements.
  1370.  
  1371. Version 2.9-beta (12/6/93)
  1372. ================
  1373.  
  1374. Like 2.7, this version was created to satisfy a contractual requirement,
  1375. and will never be distributed to anyone other than the other party to the
  1376. contract.
  1377.  
  1378. Documentation
  1379. -------------
  1380.  
  1381. Notes that Ghostscript runs on IBM PCs and compatibles under DR DOS
  1382. 6.0.
  1383.  
  1384. Notes that Ghostscript will run on IBM PCs and compatibles with
  1385. Hercules display cards if you redirect text output to a file.
  1386.  
  1387. Notes that the alternate DeskJet 500C driver (djet500c) does not work
  1388. on the 550C.
  1389.  
  1390. Gives a list of system-specific directories where Type 1 fonts are
  1391. likely to be installed, as a suggested setting for GS_FONTPATH.
  1392.  
  1393. Procedures
  1394. ----------
  1395.  
  1396. Changes the distribution script so that it stores all text files in the
  1397. main source archive with Unix end-of-line conventions, but with DOS
  1398. end-of-line conventions in the MS-DOS-specific archive.
  1399.  
  1400. Changes the MS-DOS, MS Windows, and OS/2 makefiles so that 486SX and 486DX
  1401. processors are different CPU_TYPEs.  (The former, designated by
  1402. CPU_TYPE=485, does not include an on-chip FPU.)
  1403.  
  1404. Adds a line to gs_init.ps which can be uncommented to select A4 as
  1405. the default paper size.
  1406.  
  1407. Adds a definable CFLAGS macro to the makefiles, allowing -DA4 to
  1408. select A4 as the default paper size.
  1409.  
  1410. Adds the H-P printer drivers to the standard Unix configurations.
  1411.  
  1412. Utilities
  1413. ---------
  1414.  
  1415. Fixes bugs:
  1416.     - If there were no unencoded characters, prfont.ps would get
  1417. an error.
  1418.  
  1419. Changes ansi2knr to accept a wider range of function declaration syntax,
  1420. and to not depend on any Ghostscript header files.
  1421.  
  1422. Drivers
  1423. -------
  1424.  
  1425. Fixes bugs:
  1426.     - Several drivers (DigiFax, Epson LQ-2550, NEC P6) didn't handle
  1427. A4 paper width.
  1428.     - The IBM ProPrinter wasn't being initialized properly.
  1429.     - The Epson driver didn't work properly with compilers that
  1430. insisted on 'char' being a signed type.
  1431.     - The Epson driver ignored its end_string argument, producing
  1432. incorrect end-of-page behavior on some printers.
  1433.  
  1434. Adds new drivers:
  1435.     - User-contributed drivers for Bellcore MGR (a window manager most
  1436. commonly used with OS-9) devices.
  1437.     - A user-contributed driver for the CIF file format.
  1438.     - A user-contributed driver for the HP 2563B line printer.
  1439.  
  1440. Changes the LaserJet 2p, 3, and 4 drivers so they set the initial position
  1441. to (0,0) rather than (0,0.25").  (I don't remember why it was the other
  1442. way.)
  1443.  
  1444. Implements the PageCount property in all drivers, not just printer
  1445. drivers.
  1446.  
  1447. Introduces a new gx_tile_bitmap type, and changes the tile_rectangle
  1448. device procedure to take it in place of gx_bitmap.  THIS IS A
  1449. NON-BACKWARD-COMPATIBLE CHANGE.  However, it only affects devices that
  1450. implement their own tile_rectangle procedures, of which there aren't very
  1451. many.
  1452.  
  1453. Platforms
  1454. ---------
  1455.  
  1456. Fixes bugs:
  1457.     - The VMS module lists referred to SDCTD and SDCTE instead of
  1458. SDCT.
  1459.     - The Unix install script tried to install the non-existent file
  1460. readme.doc.
  1461.     - Microsoft C does something bizarre with empty macro parameters,
  1462. which caused a problem with the gs_struct_type_... macros.
  1463.     - The Unix platforms didn't automatically handle the presence
  1464. or absence of <dirent.h>.
  1465.     - The DEC Alpha OSF/1 1.3 library lacks `const' in the prototype
  1466. for popen, which requires a workaround.
  1467.     - The DEC Alpha OSF/1 1.3 X Windows library uses `private' as a
  1468. member name.
  1469.  
  1470. Splits off gp_unifs.c, containing code common to "Unix-like" file systems.
  1471.  
  1472. Adds a user-contributed OS-9 platform.
  1473.  
  1474. Interpreter
  1475. -----------
  1476.  
  1477. Fixes bugs:
  1478.     - The currentfile cache wasn't updated properly if an executable
  1479. file appeared in the middle of a procedure.  In particular, eexec-encoded
  1480. .PFB fonts often didn't work.
  1481.     - There was an extraneous `goto top' in scfd.c.
  1482.     - An integer constant overflowed in iname.c.
  1483.     - -2147483648 (i.e., -1 << 31) was converted to a float.
  1484.     - eexec didn't skip the first 4 characters correctly if they were
  1485. split across a buffer boundary.
  1486.     - The font/matrix pair cache didn't properly free entries with only
  1487. an XUID that was being deallocated.
  1488.  
  1489. Implements additional Level 2 features:
  1490.     - Patterns, makepattern, setpattern.
  1491.     - IODevice resource, setdevparams, currentdevparams.
  1492.     - OutputDevice resource, setpagedevice, currentpagedevice.
  1493.     (Partially implemented.)
  1494.  
  1495. Adds a new type t_struct to handle miscellaneous types that are allocated
  1496. as objects and that the interpreter doesn't handle specially, and changes
  1497. condition, fontID, gstate, lock, and save types to use t_struct.  (This is
  1498. an internal change, not visible at the language level.)
  1499.  
  1500. Moves the maxlength of a dictionary to its own ref, eliminating the "size
  1501. of integer" hack.  (This is an internal change, not visible at the
  1502. language level.)
  1503.  
  1504. Adds the last OS error number to the error printout.
  1505.  
  1506. Removes the obsolete framedevice operator.
  1507.  
  1508. Implements resetfile (the only Level 1 operator not yet implemented!).
  1509.  
  1510. Changes the name of the getdevice operator to .getdevice.
  1511.  
  1512. Library
  1513. -------
  1514.  
  1515. Fixes bugs:
  1516.     - A couple of necessary casts from char * to byte * were omitted.
  1517.     - A Sun compiler required an extra cast to (void *) in the e1
  1518. macro in clip_rect_enum_ptrs in gxcpath.c.
  1519.     - The gx_dc_ procedures defined in gxdraw.c weren't marked as
  1520. 'private'.
  1521.     - The number of "on" pixels in a halftone cell sometimes varied by
  1522. 1 from cell to cell.
  1523.     - Mapping a gray level to CMYK didn't subtract it from 1 (to
  1524. produce the K component).
  1525. *    - charpath took hints into account.
  1526.  
  1527. Shuffles the order of some declarations to pacify the VMS C compiler.
  1528.  
  1529. Version 2.8-beta (11/10/93)
  1530. ================
  1531.  
  1532. This version was distributed only to beta testers.  It adds Type 0 font
  1533. support.  It also includes extensive redesign of streams (to eventually
  1534. support procedure streams) and device properties (to eventually support
  1535. get/setpagedevice and get/setdevparams).
  1536.  
  1537. Documentation
  1538. -------------
  1539.  
  1540. Notes the change in X11 foreground/background handling.
  1541.  
  1542. Changes README so it no longer claims that Ghostscript works with X11R3.
  1543.  
  1544. Notes (in devs.mak) that the cdjmono driver is the best one to use for the
  1545. DeskJet 510.
  1546.  
  1547. Procedures
  1548. ----------
  1549.  
  1550. Fixes bugs:
  1551.     - echogs wasn't always invoked with ./ on Unix systems.
  1552.  
  1553. Changes the file name unix-ansi.mak to unixansi.mak, so it can be created
  1554. on a MS-DOS system.
  1555.  
  1556. Adds a new "feature", ccinit.dev, which compiles and links the
  1557. initialization files (gs_*.ps) into the executable, just as ccfonts.dev
  1558. compiles and links fonts.  If ccinit and ccfonts are both selected, the
  1559. only external file needed at run time is Fontmap.  Note that you must have
  1560. a working version of Ghostscript already in order to create a version that
  1561. uses the ccinit feature, just as for ccfonts.
  1562.  
  1563. Utilities
  1564. ---------
  1565.  
  1566. Fixes bugs:
  1567.     - the ps2image utility didn't put a %! on the first line of the
  1568. output.
  1569.  
  1570. Drivers
  1571. -------
  1572.  
  1573. Fixes bugs:
  1574.     - The Hercules display driver didn't include definitions for
  1575. outport2 and PAGE_HEIGHT_INCHES, which it uses.
  1576.     - The BGI driver didn't call setactivepage or setvisualpage,
  1577. which it needs to do in general.
  1578.     - The Apple DMP driver declared dmp_print_page rather than
  1579. appledmp_print_page, causing a compilation error.
  1580.  
  1581. Changes the X11 driver so that it doesn't use the default foreground and
  1582. background colors: you must set foreground and background explicitly for
  1583. Ghostscript if you want them to be other than black and white
  1584. respectively.
  1585.  
  1586. Adds new user-contributed drivers for:
  1587.     - The StarJet 48 inkjet printer;
  1588.     - The Linux VGALIB display interface.
  1589.     - OS/2 Presentation Manager.
  1590.  
  1591. Changes the margins of the Epson driver to 0.2, 0.0, 0.0, 0.0, which
  1592. more accurately reflect the printer's capabilities.
  1593.  
  1594. Changes the get_props and put_props device procedures to take property
  1595. list "objects" with a procedural interface, rather than a data structure
  1596. interface.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.  It affects all
  1597. get_props and put_props procedures.  Fortunately, there were only a few
  1598. devices that implemented their own get_props and put_props procedures (the
  1599. H-P color printers, and the three window systems -- X Windows, MS Windows,
  1600. and OS/2 PM).
  1601.  
  1602. Platforms
  1603. ---------
  1604.  
  1605. Fixes bugs:
  1606.     - The meaning of the -p switch for the Watcom compile-and-link
  1607. program was changed between Watcom C/386 versions 8.5 and 9.5, causing the
  1608. make process to malfunction.
  1609.     - The SCFTAB and SCFDTAB modules were omitted from the VMS link
  1610. list.
  1611.  
  1612. Adds user-contributed code for OS/2.
  1613.  
  1614. Removes the assumption that an 80486 CPU implies the presence of hardware
  1615. floating point, since the 486SX and Cyrix 486SLC don't have it.
  1616.  
  1617. Fonts
  1618. -----
  1619.  
  1620. Fixes bugs:
  1621. *    - The GS_FONTPATH scanner didn't recognize .PFB fonts beginning
  1622. with %!PS-AdobeFont.
  1623. *    - The GS_FONTPATH scanner often didn't recognize .PFB fonts at all.
  1624.     - Type 1 fonts always set the line join, line cap, and miter limit
  1625. to known values, rather than using the current values.  (Using the current
  1626. values doesn't make much sense, but it's apparently what the Adobe
  1627. implementations do.)
  1628.     - DISKFONTS didn't work, because of the change in the Ghostscript
  1629. fonts to do a systemdict begin/end (in version 2.7.1).
  1630.  
  1631. Interpreter
  1632. -----------
  1633.  
  1634. Fixes bugs:
  1635.     - == didn't produce exactly the same output as the Adobe
  1636. interpreters.  (Some automated debugging and testing programs care.)
  1637.     - The CCITTFaxEncode filter could get caught in an infinite loop,
  1638. because it failed to mask a byte datum when scanning for runs of black
  1639. pixels.
  1640.     - The write operator gave an error for values outside the range 0
  1641. to 255, rather than just using the low-order 8 bits.
  1642.     - Some applications call a statusdict procedure named
  1643. setresolution without checking first whether it is present; Ghostscript
  1644. didn't provide one.
  1645.     - Reading from a closed stream caused an error instead of
  1646. returning EOF.
  1647.     - Input streams didn't close automatically at EOF.
  1648.     - findfont was defined as an operator, not a procedure.
  1649.     - closefile on a closed file gave an error.  (It isn't obvious
  1650. that the Adobe documentation specifies that it shouldn't, but that's what
  1651. Adobe says they do.)
  1652.     - The LZWDecode filter didn't handle codes representing strings
  1653. longer than the buffer size correctly.
  1654.     - The LZWDecode filter only allowed 4095 codes to be used, rather
  1655. than 4096.
  1656.     - The rand operator produced an infinite string of zeros if
  1657. given 0 or 0x7fffffff as the seed.
  1658.     - When a CDevProc procedure was called, there was an extra
  1659. copy of the character name on the operand stack below the operands of
  1660. CDevProc.
  1661.  
  1662. Replaces all stream implementations with new ones designed to allow
  1663. interruption at arbitrary times.  ****** The 2-D case of CCITTFaxEncode
  1664. hasn't been converted (but it probably didn't work before, either).
  1665.  
  1666. Implements additional Level 2 features:
  1667.     - Type 0 (composite) fonts.
  1668.  
  1669. Adds an eexecEncode filter.
  1670.  
  1671. Implements setcolorscreen, which was accidentally omitted from 2.7.
  1672.  
  1673. Library
  1674. -------
  1675.  
  1676. Fixes bugs:
  1677. *    - In colorimage, if the color space of the image was different
  1678. from the current color space, and the first data values on a scan line
  1679. were zeros, the wrong color could result.
  1680.     - The new flatness testing algorithm could overflow, producing
  1681. straight lines or obvious polygons instead of curves.
  1682.     - Images could fail to display pixels after the first non-blank
  1683. pixel on a line if halftoned color was required.  (This bug was probably
  1684. introduced in 2.7.)
  1685.     - Interpolation between transfer map entries didn't work, because
  1686. of a rounding/truncation bug in frac2bits (bug introduced in 2.7.1.)
  1687.     - cshow did an extra grestore at the end.
  1688.  
  1689. * Implements a hack to slightly displace 1-bit-wide or -high images.  This
  1690. is necessary to work around a bug in TeX (or dvips?), which uses such
  1691. images to draw horizontal and vertical lines without positioning them to
  1692. ensure that they cover device pixel centers.
  1693.  
  1694. Adds support for composite fonts (no new client procedures).
  1695.  
  1696. Version 2.7.2-beta (10/11/93)
  1697. ==================
  1698.  
  1699. This version was distributed only to alpha testers.
  1700.  
  1701. Utilities
  1702. ---------
  1703.  
  1704. Fixes bugs:
  1705.     - prfont.ps didn't print unencoded characters.
  1706.  
  1707. Improves mergeini.ps to remove embedded comments.
  1708.  
  1709. Interpreter
  1710. -----------
  1711.  
  1712. Fixes bugs:
  1713.     - An error occurring within the scope of an internal .stopped
  1714. didn't pop the command and error name off the stack.
  1715. *    - The = and == procedures weren't re-entrant.
  1716.  
  1717. * Adds a .writecvs operator that does a cvs to an internal string followed
  1718. by a writestring.
  1719.  
  1720. Library
  1721. -------
  1722.  
  1723. Fixes bugs:
  1724.     - grestore freed the path and the clip path in an order that
  1725. was likely to lead to memory sandbars.
  1726.     - moveto + closepath didn't actually close the path.
  1727.     - moveto + reversepath produced an empty path (no moveto).
  1728.     - moveto + closepath + reversepath produced an extra lineto.
  1729.     - reversepath didn't set the current point to the end (i.e., the
  1730. former beginning) of the last subpath.
  1731.  
  1732. Adds a "planar" memory device.
  1733.  
  1734. Version 2.7.1-beta (10/4/93, not distributed to the public)
  1735. ==================
  1736.  
  1737. Like 2.7, this version was created to satisfy a contractual requirement,
  1738. and will never be distributed to anyone other than the other party to the
  1739. contract.
  1740.  
  1741. Documentation
  1742. -------------
  1743.  
  1744. Documents the GS_OPTIONS environment variable.
  1745.  
  1746. Adds a summary of all environment variables to the documentation
  1747. (use.doc).
  1748.  
  1749. Documents the existence of a third free viewer built on Ghostscript.
  1750.  
  1751. Utilities
  1752. ---------
  1753.  
  1754. Fixes bugs:
  1755.     - wrfont didn't wrap a systemdict begin / end around the body of
  1756. the font.
  1757.     - wrfont wrote out the Symbol and ZapfDingbats encodings in a way
  1758. that only worked if the encoding was known by name.
  1759.  
  1760. Changes bdftops to include an XUID if desired.
  1761.  
  1762. Changes bdftops so that it uses 'show' for unknown ligatures, rather than
  1763. executing the characters as subroutines; this makes such ligatures work
  1764. properly with xfonts.
  1765.  
  1766. Drivers
  1767. -------
  1768.  
  1769. Fixes bugs:
  1770.     - The PCL drivers sent a printer reset (<ESC>E) at the beginning
  1771. of every page, instead of only before the first page.
  1772.     - The PCX driver didn't round up the scan line width in the
  1773. header, even though it produced scan lines with the correct (rounded)
  1774. number of bytes.
  1775.  
  1776. Adds a new map_rgb_alpha_color procedure.  This is a backward-compatible
  1777. change; this procedure defaults to calling map_rgb_color.
  1778.  
  1779. Platforms
  1780. ---------
  1781.  
  1782. Fixes bugs:
  1783.     - On Unix platforms, the value of the TEMP environment variable
  1784. had to end with a '/'.
  1785.     - On MS-DOS systems, printer output to devices other than PRN
  1786. (specifically, LPTn) didn't put the device into binary mode.
  1787.  
  1788. Adds FPU_TYPE to the Unix makefiles, with a default value of 1.
  1789.  
  1790. Removes the mention of Xmu linking problems on the SunOS platform,
  1791. since the problem no longer exists.
  1792.  
  1793. Changes the order of X Windows libraries from Xt X11 Xext to Xt Xext X11.
  1794. This makes the OSF/1 linker happier.
  1795.  
  1796. Fonts
  1797. -----
  1798.  
  1799. Fixes bugs:
  1800.     - All the fonts originated by Aladdin, and the shareware fonts,
  1801. had UniqueIDs in the 4xxxxxx range, which is only supposed to be used for
  1802. limited-distribution fonts.
  1803. *    - When Ghostscript loaded a font, it pushed a scratch dictionary
  1804. on the dictionary stack, rather than userdict.  (Note that this fix also
  1805. requires fixing the fonts to include a protective systemdict begin /
  1806. end; see below.)
  1807. *    - When loading a font failed, Ghostscript didn't check the font
  1808. name against the default font name properly.
  1809.     - Ghostscript's own fonts didn't include a systemdict begin /
  1810. end to guard against redefinition of names used in the reading
  1811. procedures (e.g., index).
  1812. *    - When Ghostscript scanned a .PFB font to get the FontName, it
  1813. didn't skip over the 6-byte header, which could cause confusion or a
  1814. syntaxerror.
  1815.     - Loading a .PFB font that left extra information on the
  1816. operand stack didn't work.
  1817.  
  1818. Changes the ZapfDingbats font to use DingbatsEncoding rather than include
  1819. a copy of the encoding in itself, if DingbatsEncoding is known.  Changes
  1820. the Symbol font similarly.
  1821.  
  1822. Removes eexec encryption from the 4 URW fonts, so they will work with
  1823. DISKFONTS.
  1824.  
  1825. Adds shareware Hiragana and Katakana fonts (Calligraphic-Hiragana and
  1826. Calligraphic-Katakana, by Kevin Hartig).
  1827.  
  1828. Adds GS on the end of the family names of all of Aladdin's own converted
  1829. fonts.
  1830.  
  1831. Replaces many of the Hershey fonts with new ones (mostly Type 1) created
  1832. by Thomas Wolff, who added accents, accented characters, and other
  1833. non-alphabetics.  These too now have proper UniqueIDs.
  1834.  
  1835. Interpreter
  1836. -----------
  1837.  
  1838. Fixes bugs:
  1839. *    - imagemask interpreted the Decode array incorrectly (inverted).
  1840.     - Running out of memory when constructing a path incorrectly
  1841. signalled a limitcheck rather than a VMerror.
  1842.     - restore didn't purge uncached scaled fonts properly.
  1843.  
  1844. Adds alpha (opacity) to the graphics state, and setalpha and
  1845. currentalpha operators.
  1846.  
  1847. Redefines erasepage in terms of a new .fillpage operator that fills
  1848. the current page with the current color and then does a sync_output.
  1849.  
  1850. Redefines setdevice and putdeviceprops in terms of new .setdevice and
  1851. .putdeviceprops operators that return a boolean indicating whether the
  1852. page needs to be erased.  With this change, operators that erase the page
  1853. always call erasepage at the interpreter level rather than calling
  1854. gs_erasepage directly.
  1855.  
  1856. Library
  1857. -------
  1858.  
  1859. Fixes bugs:
  1860.     - The null device allowed its size to be reset.
  1861.     - clippath didn't establish a current point if the clipping
  1862. path was empty.
  1863. *    - The Type 1 font interpreter (gs_type1_interpret) flattened
  1864. curves even if it was being invoked for charpath.
  1865.     - Colored halftones usually didn't come out with the correct
  1866. phase, and had several other problems.
  1867.     - A show or charpath within a BuildChar procedure didn't work.
  1868.     - Accented characters composed with seac used the base
  1869. character width instead of the composed character width.  (The Adobe
  1870. documentation says these must be the same, but some commercial fonts
  1871. don't obey this.)
  1872.     - setcurrentpoint in the accent of a character composed with
  1873. seac didn't take the accent's displacement into account.
  1874.  
  1875. Adds an alpha (coverage) value to the graphics state, and
  1876. gs_setalpha/currentalpha procedures.  Currently Ghostscript just passes
  1877. the alpha value to the driver; it doesn't attempt to emulate alpha
  1878. handling if the driver doesn't support it.
  1879.  
  1880. Redefines gs_erasepage to call gs_fillpage.
  1881.  
  1882. Bypasses the fill code if the clipping box is empty.  This makes a big
  1883. difference for stringwidth, and doesn't hurt anything else.
  1884.  
  1885. Changes frac_1 from 0x7fff to 0x7ff8.  This allows exact representation of
  1886. practically all useful fractions, since this number (32760) is
  1887. 2*2*2*3*3*5*7*13.
  1888.  
  1889. Changes float to double in several matrix routines for better accuracy.
  1890.  
  1891. Adds new device properties to implement the deviceinfo operator:
  1892. Colors, GrayValues, RedValues, GreenValues, BlueValues, ColorValues.
  1893. Also adds HWBitsPerPixel and HWColorMap.
  1894.  
  1895. Changes the sorting algorithm for halftones to use qsort instead of
  1896. special code.
  1897.  
  1898. Changes the Type 1 interpreter so that it uses the current point, rather
  1899. than (0,0), as the character origin.
  1900.  
  1901. Version 2.7-beta (9/20/93, not distributed to the public)
  1902. ================
  1903.  
  1904. This is the first of a series of beta-only versions planned for release
  1905. between 2.6.n and 3.0.  This version, in particular, was created to
  1906. satisfy a contractual requirement, and will never be distributed to anyone
  1907. other than the other party to the contract.
  1908.  
  1909. Documentation
  1910. -------------
  1911.  
  1912. Fixes bugs:
  1913.     - The "HP XLFD extensions" to X11R5 are not specific to H-P
  1914. platforms.
  1915.     - The configuration generation script used rm rather than rm -f.
  1916.     - gs.1 was installed in $(docdir) rather than $(mandir);
  1917. $(mandir) wasn't defined.
  1918.     - ansi2knr.1 was installed in $(docdir), which was
  1919. inappropriate because ansi2knr itself wasn't installed anywhere.
  1920.  
  1921. Moves documentation for versions 2.4.x and 2.5.x to history.doc.
  1922.  
  1923. Moves the documentation on how to add devices to the configuration
  1924. from devs.mak to make.doc.
  1925.  
  1926. Changes the name of readme.doc to current.doc, since the presence of
  1927. two "readme" files was confusing to users.
  1928.  
  1929. Documents how to use the Microsoft Windows PostScript printer driver
  1930. to convert TrueType fonts to Type 1 fonts embedded in the document.
  1931.  
  1932. Corrects several errors in the documentation of the get_bits driver
  1933. procedure.
  1934.  
  1935. Documents the fact that X11R3 is no longer supported.
  1936.  
  1937. Removes the last references to "Ghostscript" from the comments in the
  1938. gs_*.ps files.  The only remaining reference, other than the boilerplate
  1939. comments at the beginning of each file, is in the message at the end of
  1940. gs_init.ps.
  1941.  
  1942. Documents the use of WMAKEL rather than WMAKE with the Watcom compiler.
  1943.  
  1944. Procedures
  1945. ----------
  1946.  
  1947. Fixes bugs:
  1948. *    - The Unix install script used gs rather than $(GS) as the name of
  1949. the executable.
  1950. *    - The Unix install script didn't copy gs_dbt_e.ps to $(gsdatadir).
  1951.     - genconf.c used ps2 as a variable name; ps2 is a predefined
  1952. preprocessor symbol in the VSC compiler used by IBM.
  1953.     - @-expansion didn't interact properly with -- and -+.
  1954.     - The Unix install script didn't copy COPYING to $(docdir),
  1955. and copied README to $(gsdatadir) rather than $(docdir).
  1956.     - ps2ascii used /bin/sh -f, which is an incorrect flag.
  1957.  
  1958. Removes all uses and mentions of USG (a now-obsolete GNU convention)
  1959. as a synonym for SYSV.
  1960.  
  1961. Removes filter.dev and dps.dev from FEATURE_DEVS if level2.dev is
  1962. included, since they don't add anything beyond level2.dev.
  1963.  
  1964. Changes the ccgs script to explictly remove the old .o file before
  1965. doing the mv, for the benefit of people who have changed mv to prompt
  1966. before overwriting.  Changes the configuration script to use rm -f
  1967. for the same reason.
  1968.  
  1969. Changes the -Z switch so an empty list of options does nothing, rather
  1970. than turning on all options.
  1971.  
  1972. Adds a -@ switch which is like -- and -+ except that it does
  1973. @-expansion of arguments.
  1974.  
  1975. Changes genconf so it takes patterns from the command line that describe
  1976. how to write the linker control files, rather than having the patterns
  1977. built in.
  1978.  
  1979. Changes -d and -D so that if no value is supplied, the default is
  1980. true rather than null.
  1981.  
  1982. Utilities
  1983. ---------
  1984.  
  1985. Fixes bugs:
  1986. *    - The ps2ascii script still referenced ps2ascii.ps under its
  1987. old name gs_2asc.ps.
  1988. *    - ps2image.ps had a 'pop' missing in the written-out
  1989. definition of 'max' in the boilerplate code it put at the beginning
  1990. of compressed files.
  1991. *    - ps2image.ps got a typecheck if a scan line had no repeated
  1992. data in it anywhere.
  1993.     - wrfont.ps didn't handle CharStrings or Subrs that weren't
  1994. strings.
  1995.     - mergeini.ps produced an init file that incorrectly
  1996. attempted to load the Symbol and Dingbats encodings dynamically.
  1997.  
  1998. Removes the gsview.bat file, since it was confusingly named and not
  1999. generally useful.
  2000.  
  2001. Changes bdftops back to using encrypted CharStrings, for compatibility
  2002. with Adobe interpreters, but also changes lenIV to 0, to save a little
  2003. more space.
  2004.  
  2005. Changes the traceop utility so it makes traced operators appear to be
  2006. operators, and so it will replace a definition in systemdict if explicitly
  2007. requested to do so and systemdict is writable.
  2008.  
  2009. Adds a printafm utility for printing the metrics of fonts in AFM format.
  2010.  
  2011. Drivers
  2012. -------
  2013.  
  2014. Fixes bugs:
  2015.     - The cdj driver was missing a few type casts that were needed to
  2016. satisfy pedantic compilers.
  2017.     - For banded devices, many of the non-displaying target routines
  2018. were getting called with the original device as the first argument, not
  2019. the target device.  (This didn't make any difference in practice, because
  2020. gdev_prn_open explicitly copied the non-rendering procedures back into the
  2021. procedure vector.)
  2022. *    - The X driver didn't catch and discard bogus errors on
  2023. XFreeColors, which faulty servers generate.
  2024. *    - The X driver gave up on color allocation too easily.
  2025. *    - The X driver dynamic color table size could become negative.
  2026. *    - x_lookup_font could return platform fonts of very small sizes,
  2027. which have very inaccurate metrics.
  2028. *    - The ESCP/2 driver was incorrectly named gdevescp2 in devs.mak.
  2029.     - The Apple DMP driver used #if 0 / #endif instead of comment
  2030. brackets, and was incorrectly named "dmp" instead of "appledmp" in
  2031. the source code.
  2032. *    - The X driver didn't free dynamic colors at the start of each page.
  2033. *    - The X driver didn't bind foreground/background defaults tightly.
  2034. *    - The X driver didn't check for GHOSTVIEW_COLORS properly.
  2035. *    - The X driver freed too many colors if an allocation request failed.
  2036. *    - The X driver didn't check return value of gs_malloc for being NULL.
  2037. *    - The DeskJet/LaserJet driver used an incorrect command for
  2038. end-of-page.
  2039. *    - The DeskJet/LaserJet driver incorrectly reset the printer at the
  2040. beginning of every page.
  2041. *    - The PCX driver put an old version number in the header, and
  2042. didn't pad scan lines to an even number of bytes.
  2043.     - The BMP driver used a variable named `quad', which is a
  2044. reserved word on some platforms.
  2045. *    - The TIFF driver didn't handle A4 or B4 size paper correctly.
  2046. *    - The X11 driver incorrectly demanded the Xmu library, which was
  2047. not needed and which caused link errors on some versions of SunOS.
  2048. *    - X11 font matching scheme was too loose, causing overlaps and
  2049. other problems.
  2050. *    - X11 Font Extensions (rotated and mirrored fonts) did not work
  2051. properly on NCD terminals.
  2052. *    - When freeing the rgb cube/gray ramp, the parameters to gs_free()
  2053. did not exactly match the parameters to gs_malloc().
  2054. *    - Ghostscript failed to warn the user when it could not allocate
  2055. the original color cube/gray ramp and dropped back to a smaller
  2056. cube/ramp, or from color to mono.
  2057. *    - x_release could cause Ghostscript to fail if a font was freed
  2058. after the device was closed.
  2059.     - The X driver continued to ask the server for colors even after a
  2060. request failed, causing colored images to display very slowly.
  2061.  
  2062. * Adds a pcxgray driver to provide 8-bit gray scale output in PCX format.
  2063.  
  2064. Adds a pcx24b driver to provide 24-bit RGB color PCX output.
  2065.  
  2066. * Adds a LaserJet 4 driver.
  2067.  
  2068. Adds a user-contributed driver for the DEC LA70 (very similar to the LA75).
  2069.  
  2070. Substantially improves the performance of the PxM drivers by eliminating
  2071. an unnecessary copying step and by writing each scan line with a single
  2072. fwrite when possible.
  2073.  
  2074. Moves the gray-scale and 24-bit RGB device color mapping routines to
  2075. gxcmap.c from gdevpcx.c and (nowhere).
  2076.  
  2077. Allows window granularities smaller than 64K in the VESA driver.
  2078.  
  2079. Changes the LaserJet margins again.
  2080.  
  2081. Platforms
  2082. ---------
  2083.  
  2084. Fixes bugs:
  2085.     - Platforms where stat doesn't return a st_blocks value
  2086. computed the block count wrong.
  2087.     - In gp_vms.c, the call on SYS$FILESCAN needed two uint *s
  2088. rather than a long * and a struct *.
  2089. *    - The VMS script files referenced IBSCAN instead of ISCAN2,
  2090. and omitted GDEVXXF.
  2091. *    - The UUENCODEd icons for the MS Windows platform were omitted
  2092. from the fileset.
  2093. *    - On MS-DOS systems, filenameforall didn't interpret * alone
  2094. as a pattern matching all files.
  2095.  
  2096. Adds wildcard matching capability to filenameforall under Unix.
  2097.  
  2098. Removes gp_file_status from the platform interface, since all
  2099. platforms provide identical stat calls in the C library.
  2100.  
  2101. Adds DesqView/X (using djgcc and go32) as a platform.
  2102.  
  2103. Removes the S3 driver from the standard PC configurations.
  2104.  
  2105. Adds documentation for compiling Ghostscript on the Intergraph Clipper.
  2106.  
  2107. Updates the documentation to add a better list of X Windows font
  2108. names for the Sun platform.
  2109.  
  2110. Fonts
  2111. -----
  2112.  
  2113. Creates an external file (gs_dbt_e.ps) with the ZapfDingbats encoding
  2114. (actually in 2.6.1, but not documented there).
  2115.  
  2116. Changes the names of the Cyrillic fonts to Shareware-Cyrillic-Regular
  2117. and Shareware-Cyrillic-Italic, keeping Cyrillic, Cyrillic-Regular,
  2118. and Cyrillic-Italic as aliases.
  2119.  
  2120. * Removes the requirement that the FontName in the font file be the same
  2121. as the name in Fontmap.  (This requirement led to the need for aliases,
  2122. and was extremely confusing to users.)
  2123.  
  2124. * Adds a GS_FONTPATH environment variable containing a list of directories
  2125. that should be scanned automatically for fonts.
  2126.  
  2127. * Gets rid of the Ugly font, and changes the default to the IBM Courier
  2128. font, which is freely distributable.
  2129.  
  2130. Interpreter
  2131. -----------
  2132.  
  2133. Fixes bugs:
  2134.     - cvs didn't check for stack underflow.
  2135. *    - zht2.c didn't include alloc.h.
  2136. *    - execstackoverflow cleared the e-stack instead of just
  2137. cutting it back.
  2138.     - if and ifelse incorrectly reported typecheck instead of
  2139. stackunderflow.
  2140.     - Copying a dictionary could alter some items even if a later
  2141. item causes an invalidaccess error because of an attempted store of a
  2142. local object into global VM.
  2143.     - bitshift and cvrs assumed that longs occupied 32 bits.
  2144. *    - exitserver didn't check the password, and always succeeded.
  2145.     - Font loading didn't suppress all output messages if QUIET
  2146. was set.
  2147. *    - The interpreter incorrectly pushed its exit procedure on
  2148. the e-stack if it was called again after an interrupt.
  2149. *    - The interpreter didn't treat timeout like interrupt in
  2150. terms of re-executing the current operation.
  2151. *    - `show' operators popped their operands before they were
  2152. sure they wouldn't be interrupted.
  2153. *    - rotate with a matrix operand didn't check for multiples of
  2154. 90 degrees.
  2155.     - In the system name table, ge was misspelled eg, and
  2156. pathforall was misspelled pathfoall.
  2157. *    - file_close_file attempted to free the buffer even if it was an
  2158. externally supplied string (specifically, the argument of gs_run_string).
  2159.     - setprintername (in gs_statd.ps) set printername rather than
  2160. .printername.
  2161.  
  2162. Implements additional Level 2 features:
  2163.     - Indexed color space with lookup procedure.
  2164.     - sethalftone, except for the transfer function override,
  2165.     and currenthalftone.
  2166.  
  2167. Implements OtherSubrs for indices greater than 3 (required for
  2168. MultiMaster fonts).
  2169.  
  2170. Implements black generation and undercolor removal.
  2171.  
  2172. Changes `store' from a C procedure to a PostScript procedure.
  2173.  
  2174. Changes idiv back so it requires integer operands, per the Adobe
  2175. documentation but not per some old Adobe interpreters.
  2176.  
  2177. * Adds many new paper sizes to gs_statd.ps.  It now includes ISO a0-a10
  2178. and b0-b10, and CAD sizes archA-archE.
  2179.  
  2180. Implements `status' for non-%os% files.  (This is currently a no-op,
  2181. but the framework is there.)
  2182.  
  2183. Changes the error handler so it normally uses = rather than == to print
  2184. the operand stack, to avoid recursive errors.
  2185.  
  2186. * Adds time slicing capability to the interpreter.
  2187.  
  2188. Implements setcolorscreen/currentcolorscreen.
  2189.  
  2190. Library
  2191. -------
  2192.  
  2193. Fixes bugs:
  2194. *    - Rectangles with vertices specified in clockwise order were
  2195. drawn as 0-width lines.
  2196. *    - The string matching function reported that 'abcdefg'
  2197. matched the pattern 'abcde'.
  2198. *    - The bounding box of non-rectangular clipping paths was not
  2199. being marked as valid, so cached characters would simply get
  2200. discarded as being outside the bounding box.
  2201.     - erasepage filled the page with the device's white color,
  2202. not with gray level 1 passed through the transfer function.
  2203. *    - Colors with equal R/G/B or C/M/Y components were rendered
  2204. incorrectly if the 3 or 4 transfer functions were not all the same.
  2205. *    - Because of a bug in rc_unshare, using CIE color would give
  2206. random errors (such as /invalidaccess in --for--).
  2207. *    - setbbox didn't round the coordinates properly, which could
  2208. cause erroneous rangecheck errors with coordinates on the edge of the
  2209. box.
  2210. *    - Color halftones "flipped over" at the 50% point, inverting
  2211. foreground and background.
  2212.     - Quite a few places assumed that longs occupied 32 bits.
  2213. *    - kshow passed an incorrect c1 value to the procedure.
  2214.     - The debugging code in update_x_list in gxfill.c didn't take
  2215. into account the possibility that the active line at x_first might be
  2216. deleted.
  2217.     - gx_image_cached_char called the xfont render_char procedure an
  2218. extra time if it failed with required=0 and succeeded with required=1.
  2219. (This was just a small inefficiency, not a logic bug.)
  2220.     - Non-rectangular clipping regions weren't computed correctly,
  2221. because accum_add_rect didn't handle overlapping rectangles.
  2222.     - Drivers didn't report file system errors (such as file system
  2223. full) as an ioerror.
  2224. *    - setdevice didn't reset the charpath and setcachedevice flags.
  2225.     - The Zortech compiler produced wrong code for the uid_equal
  2226. macro; uid_equal is now a procedure.
  2227.  
  2228. Passes OtherSubrs arguments back to the caller correctly for indices
  2229. greater than 3.
  2230.  
  2231. Implements black generation and undercolor removal.
  2232.  
  2233. Removes gdev_mem_ensure_byte_order, which was no longer used or useful.
  2234.  
  2235. Removes gstdev.c (device tracing), since it hasn't been used in a
  2236. long time and is of little value given a reasonable debugger.
  2237.  
  2238. Changes the interface to the xfont char_metrics and render_char
  2239. procedures to allow them to return 1.
  2240.  
  2241. Changes 32-bit memory devices so they use CMYK color mapping rather
  2242. than RGB mapping with an unused byte.
  2243.  
  2244. Implements gs_setcolorscreen/currentcolorscreen.
  2245.  
  2246. Implements Level 2 halftones, except for the transfer function override.
  2247.  
  2248. Implements a hack to make zero-width rectangles display as one pixel wide,
  2249. to work around a bug in the Microsoft Windows PostScript driver.
  2250. Currently the hack only works for vertical lines, not horizontal ones.
  2251.  
  2252. Version 2.6.1 (5/28/93)
  2253. =============
  2254.  
  2255. This is primarily a bug-fix release for 2.6, with a couple of minor
  2256. additions.
  2257.  
  2258. Documentation
  2259. -------------
  2260.  
  2261. Adds proper `man' pages ansi2knr.1 and gs.1.
  2262.  
  2263. Procedures
  2264. ----------
  2265.  
  2266. Fixes bugs:
  2267.     - The Unix makefile produced an incorrect linker command if
  2268. EXTRALIBS was not empty.
  2269.     - The Unix install commands didn't copy devices.doc,
  2270. ps2epsi.doc, and xfonts.doc to the documentation directory.
  2271.     - echogs.c didn't include <sys/types.h>, which is needed for
  2272. time_t on some systems.
  2273.     - malloc_.h used <malloc.h> rather than <stdlib.h> on
  2274. NeXTStep systems.
  2275.  
  2276. Changes the configuration procedure to use a C program rather than
  2277. complex shell scripts.
  2278.  
  2279. Utilities
  2280. ---------
  2281.  
  2282. Fixes bugs:
  2283.     - The boilerplate produced by ps2image used the 'max'
  2284. operator, which is not a standard PostScript operator.
  2285.     - The winmaps.ps utility had 'floring' instead of 'florin' in
  2286. the OEMEncoding table.
  2287.     - quit.ps was omitted from the PC distribution.
  2288.  
  2289. Changes the name of the dicttomark procedure to .dicttomark.
  2290.  
  2291. Renames gs_2asc.ps as ps2ascii.ps, so it matches the names of the
  2292. script files.
  2293.  
  2294. Drivers
  2295. -------
  2296.  
  2297. Fixes bugs:
  2298.     - The pbmraw driver was writing out RGG instead of RGB values.
  2299.     - The X11 driver used NULL in a place where it should have
  2300. used None.
  2301.     - For multi-file output, the GIF driver didn't write a header
  2302. at the beginning of each file.
  2303.     - The Epson driver didn't honor the -A4 compilation switch,
  2304. didn't put (0,0) at the physical corner of the page, and was too
  2305. liberal about using tabs instead of spaces.
  2306.  
  2307. Replaces the color handling algorithms in the X Windows driver with
  2308. new, much better ones.
  2309.  
  2310. Makes the PC display drivers recognize the -A4 compilation switch,
  2311. like the printer drivers.
  2312.  
  2313. Adds new user-contributed drivers:
  2314.     - A driver for Epson printers that use the ESC/P 2 control
  2315. language, such as the Stylus 800.
  2316.     - A driver for the Apple Dot Matrix Printer and Imagewriter.
  2317.  
  2318. Adds a new get_xfont_device driver procedure.  This is a
  2319. backward-compatible change, since there is a sensible default.
  2320.  
  2321. Platforms
  2322. ---------
  2323.  
  2324. Fixes bugs:
  2325.     - On VMS, gconfig.h didn't have #include "gsconfig.h" as its
  2326. first line.
  2327.     - gconfig.c compiled incorrectly on the RS/6000 because the
  2328. compiler evaluated a constant of the form (x<<y)+z incorrectly.
  2329.     - Quite a few files that used the mem... functions didn't
  2330. include memory_.h, which caused trouble on some bsd4.2 systems.
  2331.     - The definition of zfont_char_xglyph confused one of the AIX
  2332. compilers.
  2333.     - On VMS, DEC C allows extra arguments for fopen, but gcc doesn't.
  2334.     - On the MS Windows platform, 2.6 used gdevwddb rather than
  2335. gdevwdib; the latter is almost always faster.
  2336.     - The PC .zip files didn't include the Windows .ICO and .RES
  2337. files in either GSEXE.ZIP or GSFILES.ZIP.
  2338.  
  2339. On PC platforms, adds an option (FPU_TYPE=-1) to optimize for
  2340. machines lacking a floating point processor.
  2341.  
  2342. Fonts
  2343. -----
  2344.  
  2345. Adds 4 new fonts contributed by URW.  These have a URW copyright and
  2346. are governed by the GNU License.
  2347.  
  2348. Documents the fact that font names in Fontmap can be strings, not
  2349. only names.
  2350.  
  2351. Adds DingbatsEncoding as a predefined encoding (in addition to
  2352. Standard, ISOLatin1, and Symbol).
  2353.  
  2354. Interpreter
  2355. -----------
  2356.  
  2357. Fixes bugs:
  2358.     - memchr (used in zfile.c) isn't available on all platforms.
  2359.     - languagelevel was defined as an operator rather than an
  2360. integer.
  2361.     - iccfont.c referred to name_StandardEncoding instead of
  2362. #include'ing font.h and referring just to StandardEncoding.
  2363.     - The CCITTFaxDecode filter didn't work on 32- (or 64-) bit
  2364. machines, because of a bug in more_bits().
  2365.     - The structures recording an allocation within the scope of
  2366. a save could get allocated unnecessarily, because they weren't
  2367. properly marked as free when an array was freed.
  2368.  
  2369. Renames the following Ghostscript-specific operators by adding a '.'
  2370. at the front: makeoperator, setdebug, setmaxlength, stringmatch,
  2371. type1decrypt, type1encrypt.
  2372.  
  2373. Adds a real implementation of glyphshow.
  2374.  
  2375. Library
  2376. -------
  2377.  
  2378. Fixes bugs:
  2379.     - Discarding fractional character coordinates in the Type 1
  2380. rasterizer led to some rendering anomalies (e.g., characters 1 pixel
  2381. too high).
  2382.     - If a font had a non-standard encoding (i.e., not
  2383. StandardEncoding, ISOLatin1Encoding, or SymbolEncoding), Ghostscript
  2384. would never invoke the platform font code.
  2385.     - The RGB to HSB color conversion algorithms produced
  2386. nonsensical values.
  2387.     - struct cached_char_s was defined redundantly in gxcdir.h,
  2388. causing compilation problems on some systems.
  2389.     - 32-bit color devices didn't work properly on little-endian
  2390. machines (arrange_bytes in gdevmem2 was wrong).
  2391.     - The scaled font cache could confuse two fonts with the same
  2392. UniqueID and different Encodings.
  2393.     - Under many common circumstances (first use of a character
  2394. was with stringwidth, the font was renamed, the font encoding was
  2395. changed), xfonts would not be used.
  2396.  
  2397. Adds gs_glyphshow.
  2398.  
  2399. Version 2.6 (5/9/93)
  2400. ===========
  2401.  
  2402. The main new feature in this release is the ability to use platform
  2403. fonts.  It also adds many more Level 2 PostScript facilities.
  2404.  
  2405. Documentation
  2406. -------------
  2407.  
  2408. Corrects some errors in the documentation of the makeimagedevice operator.
  2409.  
  2410. Adds operand and result types to the comments at the beginning of all the
  2411. operators.
  2412.  
  2413. Adds new sections on installation in use.doc.
  2414.  
  2415. Reinstates history.doc as a repository for old and no longer interesting
  2416. history information.
  2417.  
  2418. Adds a new file, devices.doc, with documentation for specific devices.
  2419.  
  2420. Points out that font2c must be run with a Fontmap that includes the fonts
  2421. being converted, and that its arguments must be quoted with "" on VMS
  2422. systems.
  2423.  
  2424. Notes that the font name in the Fontmap must be the same as the FontName
  2425. in the font.
  2426.  
  2427. Adds a list of the Level 2 facilities not provided by Ghostscript.
  2428.  
  2429. Identifies bug-ghostscript@prep.ai.mit.edu as an alias for the
  2430. gnu.ghostscript.bug newsgroup.
  2431.  
  2432. Points out explicitly that -sOutputFile=- sends output to stdout, and
  2433. requires using the -q switch.
  2434.  
  2435. Documents the use of tar_cat to construct the Unix makefiles.
  2436.  
  2437. Adds a new file, xfonts.doc, that describes the external font interface.
  2438.  
  2439. Documents the fact that drivers must use gs_malloc and gs_free rather than
  2440. malloc and free.
  2441.  
  2442. Documents the *.sh (shell script) files.
  2443.  
  2444. Adds brief documentation on some additional development tool .ps files.
  2445.  
  2446. Documents the TEMP and GS_OPTIONS environment variable.
  2447.  
  2448. Points out the need to run Windows in 386 Enhanced mode on machines
  2449. that have less than 6 Mb of RAM.
  2450.  
  2451. Consolidates documentation on compiler switches in make.doc (some of
  2452. it had been in the unix*.mak files).
  2453.  
  2454. Procedures
  2455. ----------
  2456.  
  2457. Fixes bugs:
  2458.     - \'s in arguments following -- were doubled.
  2459.  
  2460. Includes the full set of filters automatically if the level2 feature
  2461. is selected.
  2462.  
  2463. Extends DEVICE_DEVS... up to DEVS9.  Adds DEVICE_DEVS1 as well.
  2464.  
  2465. Renames turboc.mak and tbcplus.mak as tc.mak and bc.mak.
  2466.  
  2467. Makes @-files use the library path (GS_LIB, -I).
  2468.  
  2469. Changed the Unix install script to use install <file> <destfile>
  2470. rather than install <file> <directory>.
  2471.  
  2472. Adds a GS_OPTIONS environment variable that acts like an implicit @-file
  2473. at the beginning of the command line (i.e., may contain switches and
  2474. initialization files).
  2475.  
  2476. Renames sym__enc.ps as gs_sym_e.ps.
  2477.  
  2478. Adds a user-contributed shell script for using Ghostscript with an
  2479. H-P printer spooler.
  2480.  
  2481. Adds level1.ps to the set of installed utility files.
  2482.  
  2483. Extends the TEMP environment variable (the directory for scratch
  2484. files) to work on Unix as well as MS-DOS.
  2485.  
  2486. Changes the MS Windows makefile to generate gswin.exe rather than
  2487. gs.exe, and the Watcom makefile to generate gs386.exe.
  2488.  
  2489. Moves the "product" string from gs_init.ps to iinit.c.
  2490.  
  2491. Adds a GS macro to the makefiles, to allow choosing the name of the
  2492. executable.
  2493.  
  2494. Utilities
  2495. ---------
  2496.  
  2497. Fixes bugs:
  2498. *    - font2c did the wrong thing (still) for fonts that didn't
  2499. use StandardEncoding, ISOLatin1Encoding, or SymbolEncoding.
  2500. *    - impath.ps had a fatal bug (wrong operand order for
  2501. charstack_write) that caused bdftops to fail.
  2502.     - gslp didn't wrap or truncate lines.
  2503.     - gslp didn't handle tabs in a second or subsequent column
  2504. properly.
  2505.     - The definition of ashow in gs_2asc.ps incorrectly undid the
  2506. increment following the last character.
  2507.     - The definition of awidthshow in gs_2asc.ps failed to pop
  2508. two entries from the stack, and also tested the character against the
  2509. wrong value.
  2510.  
  2511. Adds a shell script (sysvlp.sh) that interfaces Ghostscript with the
  2512. System V 3.2 lp interface.
  2513.  
  2514. Adds ps2ascii and ps2epsi script/batch files.
  2515.  
  2516. Adds a new utility, mergeini.ps, for concatenating all the
  2517. Ghostscript initialization files into a single file, optionally
  2518. removing comments and blank lines.
  2519.  
  2520. Adds new switches to gslp:
  2521.     -q: suppress all printed output.
  2522.     --detect: check whether the file begins with %!, and if so,
  2523.         interpret it directly as a PostScript file.
  2524.     --first-page <page#>: replaces the former -P switch.
  2525.     --last-page <page#>: replaces the former -Q switch.
  2526.     --(heading|footing)-(left|center|right) <string>: define
  2527.         headers/footers.  # inserts the page number.
  2528.     --margin-(top|bottom|left|right) <inches>: define margins.
  2529.     --spacing <n>: for double, triple, etc. spacing.
  2530. Also makes gslp ignore all the enscript flags it doesn't implement.
  2531.  
  2532. Adds an option to wrfont.ps to do encryption at read-in time.  (This
  2533. allows much better compression of the standard Ghostscript fonts.)
  2534. Changes bdftops to use this option.
  2535.  
  2536. Changes gslp to accept wild cards in file names.
  2537.  
  2538. Replaces landscap.ps with a new one contributed by a user.
  2539.  
  2540. Changes the compression scheme used in ps2image to a much more
  2541. effective one.  Writing images is much slower than with the previous
  2542. scheme, but reading is not.
  2543.  
  2544. Platforms
  2545. ---------
  2546.  
  2547. Fixes bugs:
  2548.     - SCFDTAB and SCFTAB were omitted from the VMS module lists.
  2549.     - Function prototypes were not being used with the Watcom
  2550. compiler.
  2551.     - On MS-DOS platforms, if the value of the TEMP variable had
  2552. a trailing : or \, Ghostscript appended a \ anyway.
  2553.     - Under Windows, changing the size or resolution of the image
  2554. closed and reopened the window.
  2555.     - Ghostscript would not build correctly with the Watcom compiler
  2556. if DOS4G=quiet was not set, because the DOS4GW copyright message was sent
  2557. to stdout.
  2558. *    - Finally gets Ghostscript to run properly on the RS/6000, by
  2559. adding a compiler bug workaround to arc_add and arc_either.
  2560. *    - Finally gets Ghostscript to compile properly on Sun SPARC
  2561. systems, by adding a compiler bug workaround in scan_number.
  2562.  
  2563. Changes the default MS-DOS configuration from 8086/8088 to 80286.
  2564.  
  2565. Adds all the SuperVGA drivers to the BC++ and Watcom executables
  2566. (except for the VESA driver in the Watcom executable).
  2567.  
  2568. Adds a makefile (msc.mak) for the Microsoft C/C++ 7.0 platform.  This
  2569. is currently a MS-DOS, not a MS Windows, platform.
  2570.  
  2571. Changes gp_enumerate_files_init so it takes a gs_memory_procs *, not
  2572. separate proc_alloc_t and proc_free_t arguments; also, it must
  2573. enumerate precisely the requested set of files, not a superset.  THIS
  2574. IS A NON-BACKWARD-COMPATIBLE CHANGE.  It affects all gp_*.c files.
  2575.  
  2576. Adds the P*M drivers and bit.dev to the standard configuration on
  2577. Unix platforms.
  2578.  
  2579. Changes the Watcom makefile so it uses the WATCOM environment variable (by
  2580. default) as the base directory for the Watcom executables.
  2581.  
  2582. Adds the MS Windows COMMDLG.DLL and SHELL.DLL files to the set of
  2583. files incorporated in GSEXE.ZIP, since the new MS Windows code uses
  2584. them, and they aren't provided with Windows 3.0.
  2585.  
  2586. Makes major revisions to the MS Windows platform and driver code, to
  2587. support the gsview front end, and also to remove the dependence on the
  2588. Borland EasyWin library.  NOTE: Compiling the MS Windows code now requires
  2589. Borland C++ 3.1 (not 3.0).
  2590.  
  2591. Changes time_.h so that Ghostscript will compile and run on A/UX.
  2592.  
  2593. Changes the MS-DOS implementation of file enumeration so it always
  2594. treats \s in the file name as literal characters, not escapes, unless
  2595. there are two \\s in a row.  This does the most sensible thing given
  2596. the DOS file naming conventions.
  2597.  
  2598. Adds a %pipe% file device under Unix.
  2599.  
  2600. Adds a makefile for Watcom C under MS Windows.  This is very preliminary;
  2601. in particular, NO display output is supported.
  2602.  
  2603. Fonts
  2604. -----
  2605.  
  2606. Fixes bugs:
  2607.     - fonts.mak referred to ncri and puti rather than ncrri and
  2608. putri.
  2609.     - cyr and cyri had the wrong protection.
  2610.     - The Hershey fonts left the font on the stack when they were
  2611. loaded.
  2612. *    - The FontName of an aliased font was the original FontName
  2613. from the file, not the alias.
  2614. *    - Fontmap.BTS had incorrect entries for AvantGarde-Demi and
  2615. AvantGarde-DemiOblique.
  2616.     - Ghostscript pushed userdict, rather than an empty writable
  2617. dictionary, onto the stack when loading a font, leading to name clashes.
  2618.  
  2619. Adds a new cfonts.mak with a full set of rules for compiling all the
  2620. standard Ghostscript fonts (except the Hershey fonts) into C.
  2621.  
  2622. Adds UniqueIDs to the Hershey fonts, and removes the UniqueIDs from
  2623. the Hershey entries in the Fontmap.
  2624.  
  2625. Adds a new Fontmap for VAX/VMS with DECWindows/Motif.
  2626.  
  2627. Changes MakeHersheyFont so it takes the encoding as an additional
  2628. parameter, and changes the Hershey-Symbol font to use SymbolEncoding.
  2629.  
  2630. Drivers
  2631. -------
  2632.  
  2633. Fixes bugs:
  2634.     - The !@*&^%#@$ PCL drivers *still* didn't do the right thing
  2635. about vertical spacing: the <ESC>*p+<n>Y command works on all PCL 3,
  2636. 4, and 5 printers *except* the LaserJet IIp.
  2637.     - The cdj driver used recursive macros (height, t_margin,
  2638. b_margin) that not all compilers handled correctly.
  2639.     - The djtc driver used some assignments including =*, which
  2640. some compilers dislike.
  2641.     - The S3 driver wouldn't compile correctly with the Watcom
  2642. compiler.
  2643.     - The makefile entry for the S3 driver was wrong.
  2644.     - The SuperVGA drivers returned an error, rather than using
  2645. the highest available resolution, if a too-high resolution was
  2646. requested.
  2647.     - The GIF driver produced an incorrect header for images
  2648. wider or taller than 32K pixels.
  2649.     - The GIF driver wasn't able to handle multi-page documents
  2650. correctly.
  2651.     - The margins on the DeskJet were still not correct.
  2652.     - Some ANSI C compilers rejected a complex expression in
  2653. gdevpccm.c.
  2654.     - Printer drivers didn't recover cleanly from problems in
  2655. opening the scratch files.
  2656.     - The BJ-10e driver used the same name `out' for a label and
  2657. a variable.
  2658.     - The SCO ODT compiler couldn't handle sizeof(ppdev->fname).
  2659.     - The Epson driver used the wrong value for ESC in the
  2660. initialization string.
  2661.  
  2662. Adds new drivers:
  2663.     - Drivers to produce MS Windows .BMP format output.
  2664.     - A new ATI Wonder display driver (800x600, 16 colors) and a
  2665. 1024x768 mode for the existing driver.
  2666.  
  2667. Adds new user-contributed drivers:
  2668.     - A driver for the Tektronix 4693d color printer.  This carries a
  2669. university copyright.
  2670.     - A driver for the SPARCprinter.
  2671.     - A driver for the Canon BJ200 printer.
  2672.     - A driver for the IBM ProPrinter.
  2673.     - A driver for the DEC LJ250 printer, which has a
  2674. PaintJet-compatible mode.
  2675.     - A replacement driver for the Sony NWP533.
  2676.     - A driver that writes TIFF/F (Group 3 fax) files.  This carries
  2677. an external copyright.
  2678.     - A driver for the C.Itoh M8510 printer.
  2679.     - A driver for the Okidata MicroLine 182 9-pin dot-matrix printer.
  2680.     - A Hercules Graphics driver.
  2681.     - A driver for printers under MS Windows.
  2682.     - A driver for direct frame buffer addressing under SCO Unix
  2683. and Xenix and AT&T SVR4.
  2684.  
  2685. Changes the get_bits driver procedure so it always reads a single
  2686. scan line, and optionally does not copy the data.  THIS IS A
  2687. NON-BACKWARD-COMPATIBLE CHANGE.  However, this change does not affect
  2688. any existing printer driver, since these all go through intermediate
  2689. routines in gdevprn.c.
  2690.  
  2691. Changes gdevprn.h, and the relevant printer drivers, so that -DA4
  2692. will change the default paper size for any printer driver.
  2693.  
  2694. Allows the use of NULL or 0 for default procedures in the driver
  2695. procedure vector.
  2696.  
  2697. Adds an optional map_cmyk_color procedure to the driver procedure
  2698. vector.
  2699.  
  2700. Changes the Epson driver so that the minimum amount of white space
  2701. required to use a tab is an easily changed parameter.
  2702.  
  2703. Changes the BGI driver to use separate segments for the Borland
  2704. device drivers, to reduce the risk of overflowing a segment.
  2705.  
  2706. Adds an optimization option (normally enabled) to the PGM and PPM drivers
  2707. such that they revert to PBM or (for PPM) PGM if the page can be
  2708. represented that way.
  2709.  
  2710. Adds a new (optional) driver procedure to get the procedure vector
  2711. for external fonts.
  2712.  
  2713. Adds an argument to gp_open_printer to indicate whether the file should be
  2714. opened in binary or text mode.  THIS IS A NON-BACKWARD-COMPATIBLE CHANGE.
  2715. However, this change does not affect any existing printer driver, since
  2716. these all go through intermediate routines in gdevprn.c.
  2717.  
  2718. Changes the LN03/LA50/LA75 driver so it uses a text record mode to open
  2719. the output file under VMS (by adding an argument to gp_open_printer to
  2720. indicate this.)
  2721.  
  2722. Allows (indeed, encourages) drivers to use far_data to declare the device
  2723. structure, primarily to avoid overflowing the 64K data segment under MS
  2724. Windows.  Changes the file output drivers and many of the printer drivers
  2725. to declare their device structures as far_data.
  2726.  
  2727. Replaces the AT&T 3B1 driver with an updated version (from the same
  2728. contributor).
  2729.  
  2730. Changes the Epson BJ driver and the SPARCprinter driver so they align
  2731. the (0,0) point of the page with the physical corner of the paper
  2732. rather than with the origin of the printable area.
  2733.  
  2734. Removes the EIZO MDB-10 driver, since it caused complications for the
  2735. EGA and VGA drivers and is not a widely used device.
  2736.  
  2737. Interpreter
  2738. -----------
  2739.  
  2740. Fixes bugs:
  2741.     - The entry for the copydevice operator in the operator table
  2742. was initialized incorrectly.
  2743.     - printobject and writeobject didn't handle nested arrays.
  2744.     - restore didn't properly close the current file (if
  2745. appropriate), causing an invalidaccess error.
  2746.     - buildfont required the presence of a valid, 4-element
  2747. FontBBox.  (The Red Books say it's required, but Adobe interpreters
  2748. don't require it; some DEC software generates a 3-element FontBBox.)
  2749.     - resourceforall had several bugs; it didn't do even
  2750. approximately the right thing.  There were quite a few other problems
  2751. with the implementation of resources.
  2752.     - setfont, makefont, and scalefont would accept a font with
  2753. no FID entry.
  2754. *    - Loading a .PFB font left the file open (until the next
  2755. restore or quit).
  2756.     - The default (null) font didn't include a PaintType entry,
  2757. which some PostScript files expected.
  2758. *    - The ASCIIHexDecode filter sometimes thought the underlying
  2759. stream was at EOF even when there was (at most one buffer's worth of)
  2760. data left.
  2761.     - iscan.c included <ctype.h> before std.h, causing type name
  2762. clashes on some systems.
  2763. *    - save and restore didn't handle the pointers in the graphics
  2764. state correctly; for example, the current font wasn't restored
  2765. properly.
  2766.     - Binary object sequences at the top interpreter level didn't
  2767. get executed immediately.
  2768.     - On high-resolution devices, the default transfer function
  2769. converted almost-white grays to very light grays rather than white.
  2770.     - The `string' operator was checking the string length
  2771. against max_uint rather than max_ushort, which could cause invalid
  2772. lengths to be accepted.
  2773. *    - deviceinfo caused a stackunderflow error.
  2774. *    - idiv could give incorrect results for quotients or
  2775. remainders that didn't fit in 24 bits.
  2776. *    - The ASCII85Encode filter padded trailing bytes with 1's
  2777. rather than 0's.
  2778. *    - The ASCII85Decode filter had a typo that produced incorrect
  2779. results if there were exactly 2 trailing bytes.
  2780.     - findlibfile didn't push a copy of the file name if it was
  2781. the name of a special (%) file.
  2782.     - setduplexmode was not defined in statusdict, causing
  2783. /undefined errors from some poorly designed input files.
  2784. *    - The CCITTFaxDecode filter had several bugs in 2-D decoding.
  2785. *    - The ASCII85Decode filter didn't read ahead to detect EOD if
  2786. it fell precisely on a buffer boundary.
  2787.     - If a file mentioned on the command line redefined `start',
  2788. Ghostscript would run the new definition rather than the built-in one
  2789. after processing all the files on the command line.
  2790.     - The SCO ODT compiler couldn't handle the conditionals in the
  2791. ngetc (iscan.c) and sgetc* (stream.h) macros.
  2792.     - makefont and scalefont didn't cache the PostScript dictionaries
  2793. for scaled fonts.
  2794.     - Changing the elements of the Encoding of a font dynamically
  2795. didn't take effect if the character was already cached.
  2796.     - makefont and scalefont didn't add the (undocumented) OrigFont
  2797. and ScaleMatrix entries to the new font.
  2798. *    - findfont insisted that the font name be a string or a name.
  2799.     - filenameforall could cause an incorrect transfer of control
  2800. if no files matched the pattern.
  2801. *    - ISOLatin1Encoding had hyphen instead of minus at code 45.
  2802.     - restore didn't reset saved_cbot and saved_ctop correctly;
  2803. as a result, some freed blocks could get abandoned rather than put on
  2804. the free list.
  2805.     - Some numerical constants in zarith.c assumed that longs
  2806. occupied 32 bits.
  2807.  
  2808. Implements additional Level 2 features:
  2809.     - %device%file names (only the "os" device is provided).
  2810.     - <~ ~> for ASCII-85 strings.
  2811.     - Binary error messages.
  2812.     - BuildGlyph.
  2813.     - CCITTFaxDecode filter entries EndOfBlock, Rows, and
  2814.     (undocumented) FirstBitLowOrder.
  2815.     - {set/current}{color/colorspace/overprint/colorrendering/
  2816.     blackgeneration/undercolorremoval}.  (See below under library
  2817.     for limitations.)
  2818.     - Decode for the dictionary form of image.
  2819.     - File access modes a, r/w/a+.
  2820.     - Font entries CDevProc, Metrics2, and WMode.
  2821.     - Font operators cshow, findencoding, rootfont, and
  2822.     setcachedevice2.
  2823.     - glyphshow (emulated with PostScript code).
  2824.     - languagelevel.
  2825.     - realtime.
  2826.     - setbbox.
  2827.     - (Subset of) system and user parameters.
  2828.     - xshow, yshow, and xyshow.
  2829.     - XUIDs for fonts.
  2830.  
  2831. Moves the installation of systemdict and the initial allocation of
  2832. globaldict (if relevant) and userdict from gs_init.ps to iinit.c.
  2833.  
  2834. Makes Level 2 features dynamically selectable through the
  2835. .setlanguagelevel operator; disables all Level 2 features
  2836. (specifically including automatic dictionary expansion) unless the
  2837. level2 feature is included and active.
  2838.  
  2839. Adds the .knownget operator for speeding up system procedures.
  2840.  
  2841. Renames the type1addpath operator as .type1addpath; adds an optional
  2842. left side bearing argument; changes it so it does not do the
  2843. setcachedevice, fill, or stroke, but does do a moveto for the
  2844. character width.  Changes Type1BuildChar appropriately.  (All this is
  2845. needed to make WMode work.)
  2846.  
  2847. Removes the .setmetrics operator, which is no longer needed.
  2848.  
  2849. * Changes the meaning of the user_errors argument to gs_run_file and
  2850. gs_run_string so that -1 means always return on an error, 0 means
  2851. only return on an error not within a `stopped'.
  2852.  
  2853. Adds all the necessary checks and operators for local/global VM, but
  2854. doesn't actually implement local/global mode.
  2855.  
  2856. Changes setcachedevice back so that it requires 4 numbers on the
  2857. stack rather than a 4-element array.  (It was changed to be the other
  2858. way in release 2.0, but that was because I didn't realize that fonts
  2859. had to have an executable FontBBox, and some of the Ghostscript fonts
  2860. didn't.)
  2861.  
  2862. Changes all the filter operators from .filterxxx to .filter_xxx, and
  2863. removes the need to enumerate them in gs_init.ps.
  2864.  
  2865. Adds .oserrno and .oserrorstring operators for getting the last OS
  2866. error (in the current context).
  2867.  
  2868. Changes gs_finit similarly to gp_exit.  Adds gs_exit_with_code that
  2869. takes both an exit status and a Ghostscript error code.
  2870.  
  2871. Changes the name of name.h to iname.h.
  2872.  
  2873. Adds support for the `interrupt' error (but doesn't provide any standard
  2874. way of generating one, other than through the gp_check_interrupts polling
  2875. function).
  2876.  
  2877. Adds copyright to systemdict.
  2878.  
  2879. Changes the spot halftone screen to an elliptical screen supplied by
  2880. Berthold K. P. Horn.
  2881.  
  2882. Adds a check that the first token in gs_init.ps is an integer.  In
  2883. conjunction with other code in gs_init.ps, this should catch all attempts
  2884. to run Ghostscript with a gs_init.ps that doesn't match the executable.
  2885.  
  2886. Changes all relevant occurrences of sizeof to size_of in order to
  2887. work with the buggy SVR4.2 C compiler.
  2888.  
  2889. Changes gp_exit so it is passed both the Ghostscript error code and
  2890. the exit status code as arguments.  This is backward-compatible for
  2891. all but the pickiest compilers.
  2892.  
  2893. Adds a call on gp_check_interrupts() after fwrite calls in the stream
  2894. machinery.  This prevents lengthy console output from locking out
  2895. other programs.
  2896.  
  2897. Changes a couple of occurrences of op_def_ptr in iinit.c to work around a
  2898. `const' bug in Sun's SC1.0 compiler.
  2899.  
  2900. Adds a special hack in the 'where' operator to work around a bug in Aldus
  2901. Freehand 2.x.
  2902.  
  2903. Changes all empty argument lists from () to (void), which is the ANSI
  2904. C syntax.
  2905.  
  2906. Adds a hack to ignore ^[ and ^D^[ tokens, to work around the prologue
  2907. and epilogue emitted by the MS Windows LaserJet IV driver.
  2908.  
  2909. Defines the processcolors operator, which should not be needed, but
  2910. is required because of bugs in Lotus 1-2-3 and Adobe PhotoShop.
  2911.  
  2912. Changes the allocator (ialloc) to fill all allocated and/or freed
  2913. blocks with a marker if gs_alloc_debug is set, as gs_malloc and
  2914. gs_free already do.
  2915.  
  2916. Library
  2917. -------
  2918.  
  2919. Fixes bugs:
  2920.     - 16-bit memory devices stored the bytes of each pixel in the
  2921. wrong order.
  2922.     - copy_mono did the wrong thing when copying 1 source chunk
  2923. to 2 destination chunks with polarity inverted.  (This probably
  2924. didn't affect any actual uses of Ghostscript.)
  2925. *    - The compile-time check for ints being 2 or 4 bytes used the
  2926. #error directive, which most compilers don't recognize.
  2927.     - arc and arcn didn't do the right thing for degenerate
  2928. (single-point) arcs, or for arcs drawn in the "wrong" direction that
  2929. were multiples of 360 degrees.
  2930.     - charpath did the wrong thing with Type 3 fonts.
  2931.     - copyscanlines gave an error if the buffer was too large.
  2932.     - The copy_mono procedure (used for text and halftones) for
  2933. 2- and 4-bit-per-pixel memory and printer devices incorrectly
  2934. incremented the destination pointer after every pixel, instead of
  2935. only after every byte.
  2936.     - The fill_rectangle procedure (used for graphics) for 2- and
  2937. 4-bit-per-pixel memory and printer devices, if given any color other
  2938. than all 0's or all 1's, multiplied the X coordinate and width by 2
  2939. or 4, thereby filling the wrong area.
  2940.     - The use of 'data' in both gs_type1_data and gs_font upset
  2941. the VMS compiler.
  2942.     - The `Flex' feature wasn't implemented for Type 1 fonts,
  2943. which caused serious errors in rendering some fonts that use it.
  2944. (Unfortunately, some Adobe fonts violate the specification, so we had
  2945. to implement Flex to always use a curve.)
  2946. *    - Stem width adjustment was too eager, producing very strange
  2947. effects on small characters with tight curves (a curve point could
  2948. get snapped to the other side of the open area).
  2949.     - The allocator didn't align structures adequately on
  2950. machines where sizeof(long) or sizeof(char *) was 8 bytes.
  2951.     - The test for IEEE floating point gave an incorrect
  2952. (negative) result on machines where sizeof(long) was 8 bytes.
  2953.     - genarch.c assumed that the result of subtracting two
  2954. pointers was an int, leading to a garbage arch.h file on systems
  2955. where this was false.
  2956. *    - The Type 1 font interpreter incorrectly reset the adjusted
  2957. path position to be the same as the unadjusted path position whenever
  2958. it returned control to the client (in particular, for callothersubr),
  2959. leading to discontinuities and distortions in the character shapes.
  2960. *    - Accented characters in Type 1 fonts often misplaced the
  2961. accent to the left.
  2962.     - gsmisc.c wouldn't compile on machines with 64-bit pointers,
  2963. because _pad was 0, and ANSI compilers don't accept 0-length arrays.
  2964.     - pathforall got confused if the client procedures modified
  2965. the path.
  2966.     - The command list file representation limited X and Y
  2967. coordinates to 15 bits.
  2968. *    - stroke could produce spikes or other garbage for mitered
  2969. joins as a result of stroke adjustment.
  2970.     - The params_size field of the null device was wrong, so
  2971. scaling the null device produced unpredictable results.
  2972.  
  2973. Changes monobit memory devices to always store data big-endian.  This
  2974. eliminates byte-swapping, at the cost of slightly slower rendering.
  2975.  
  2976. Removes the memswab* routines, since they are no longer needed.
  2977.  
  2978. Implements gs_cshow_[n_]init, which provides support for cshow, and
  2979. gs_xyshow_[n_]init, which provides support for {x,y,xy}show.
  2980.  
  2981. Adds an optional left side bearing argument to gs_type1_interpret.
  2982.  
  2983. Changes gs_type1_interpret so it does not do a setcachedevice, fill,
  2984. or stroke, but only appends the character outline to the path
  2985. (including a moveto for the character width.)
  2986.  
  2987. Removes gs_setmetrics, which is no longer needed.
  2988.  
  2989. Implements gs_setcachedevice2, which provides support for
  2990. setcachedevice2.
  2991.  
  2992. Speeds up gsave/grestore by allocating, deallocating, and copying as
  2993. much as possible of the graphics state in a single operation.
  2994.  
  2995. Implements gs_{set/current}{color/colorspace/overprint/colorrendering/
  2996. blackgeneration/undercolorremoval}.  Device, indexed (with table, not
  2997. with procedure), CIE, and (substituted) separation colors are
  2998. supported; some of the setup code for patterns is also present.
  2999.  
  3000. Increases the size of temporary file names in gdevprn.h from 30
  3001. characters to 60.
  3002.  
  3003. Changes the character cache to be allocated dynamically in chunks.
  3004.  
  3005. Splits gxcache.c into gxccache.c (fast "hit" code) and gxccman.c (all
  3006. other code).
  3007.  
  3008. Changes all occurrences of sizeof to size_of in order to work with the
  3009. buggy SVR4.2 C compiler.
  3010.  
  3011. Adds a new concept of "external fonts", which allow a driver to
  3012. substitute its own fonts for the ones obtained through the normal
  3013. font machinery.
  3014.  
  3015. Changes all empty argument lists from () to (void), which is the ANSI
  3016. C syntax.
  3017.  
  3018. Version 2.5.2 (9/20/92)
  3019. =============
  3020.  
  3021. This is yet another bug fix release to (finally!) get the PCL drivers
  3022. working again.
  3023.  
  3024. Procedures
  3025. ----------
  3026.  
  3027. Fixes bugs:
  3028.     - The comment in devs.mak for cdjcolor said it used 8 bits
  3029. per pixel, rather than the correct 24.
  3030.  
  3031. Adds gsbj/dj/lj/lp and gslp.ps to the installed files on Unix
  3032. systems.
  3033.  
  3034. Removes dps.dev and level2.dev from the standard configurations on
  3035. all platforms, since the presence of the setcolor operator was
  3036. causing the output of some common applications to fail.
  3037.  
  3038. Utilities
  3039. ---------
  3040.  
  3041. Fixes bugs:
  3042.     - font2c produced invalid output for any font that didn't use
  3043. StandardEncoding or ISOLatin1Encoding.
  3044.  
  3045. Platforms
  3046. ---------
  3047.  
  3048. Fixes bugs:
  3049.     - gp_sysv.c required an extern long timezone.
  3050.  
  3051. Drivers
  3052. -------
  3053.  
  3054. Fixes bugs:
  3055.     - The PCL drivers were *still* doing the wrong thing about
  3056. zeroing the seed row for Mode 3 compression.
  3057.     - Setting the resolution with -r didn't work under Windows.
  3058.     - The Windows driver got a stack overflow if it was ever
  3059. asked to display a bit image wider than 32 pixels.
  3060.     - The Tseng driver didn't sense the model (ET3000 vs. ET4000)
  3061. correctly.
  3062.  
  3063. Adds the eps9high device to the standard MS-DOS makefiles.
  3064.  
  3065. Interpreter
  3066. -----------
  3067.  
  3068. Fixes bugs:
  3069.     - gs_run_string used gs_user_errors (a global) rather than
  3070. user_errors (its argument) to control error handling.  (This does not
  3071. affect normal operation of Ghostscript, only use as a server.)
  3072.     - eexec popped the top element of the dictionary stack
  3073. afterwards even if the encrypted code had pushed something onto it.
  3074. This caused problems for some badly written PostScript code.
  3075.     - The printed form of real numbers didn't always include a
  3076. decimal point, causing compatibility problems.
  3077.  
  3078. Makes -s and -d work for device properties.
  3079.  
  3080. Increases the cache limit on large-memory systems.
  3081.  
  3082. Adds a check to ensure that the revision of gs_init.ps matches that
  3083. of the interpreter.
  3084.  
  3085. Adds the .knownget operator.
  3086.  
  3087. Library
  3088. -------
  3089.  
  3090. Fixes bugs:
  3091.     - The raster computation in clist_render_init, and the
  3092. computation of state_size in clist_open, didn't widen an operand to
  3093. long, leading to possibly incorrect operation for 24-bit-per-pixel
  3094. printers on MS-DOS systems.
  3095.     - The flatness was set too large for Type 1 characters,
  3096. leading to visible straight edges instead of curves at large sizes.
  3097.     - Type 1 fonts that contained out-of-range coordinates would
  3098. produce garbled output.  (This was not a problem with the standard
  3099. Ghostscript fonts, or with Adobe Type Manager fonts.)
  3100.     - gschar0.c wouldn't compile, because it referred to a
  3101. non-existing structure member penum->chr.  (This had no effect on
  3102. Ghostscript's operation.)
  3103.     - The curve flattener required line segments to be no more
  3104. than 8 x the flatness in length, leading to an enormous number of
  3105. segments.
  3106.     - pathforall would cause an addressing fault if the path
  3107. consisted of only a moveto.
  3108.  
  3109. Refactors some header files so that std.h is always included before
  3110. any system header file that might include sys/types.h.
  3111.  
  3112. Adds logic for removing top and bottom blank rows in cached
  3113. characters.  (This is the beginning of compression for the cache.)
  3114.  
  3115. Changes the arguments of memswab2/4 from char * to byte *, for more
  3116. accurate type conformance.
  3117.  
  3118. Version 2.5.1 (9/11/92)
  3119. =============
  3120.  
  3121. This is the usual bug fix re-release.
  3122.  
  3123. Procedures
  3124. ----------
  3125.  
  3126. Fixes bugs:
  3127.     - The makefile rules for compiled fonts had a circular
  3128. dependency.
  3129.     - `make begin' didn't work properly on all platforms.
  3130.  
  3131. Ensures that all batch files end with a newline.  (The absence of the
  3132. newline was confusing the GNU diff program.)
  3133.  
  3134. Documents the fact that the -dASCIIOUT switch no longer exists.
  3135.  
  3136. Utilities
  3137. ---------
  3138.  
  3139. Fixes bugs:
  3140.     - pstoppm didn't `bind' its internal procedures.
  3141.     - grestoreall would undo the output device selected by
  3142. pstoppm.
  3143.  
  3144. Changes the utilities for reading and writing Type 1 character
  3145. outlines so they can work with stack representations as well as
  3146. arrays.
  3147.  
  3148. Removes the pfbtogs.ps, phonbook.ps, and showpbm.ps utilities from
  3149. the distribution.
  3150.  
  3151. Adds a gslj utility to parallel gslp and gsdj.
  3152.  
  3153. Platforms
  3154. ---------
  3155.  
  3156. Adds the DeskJet 500C drivers (cdeskjet/cdj*) to the MS-DOS / Borland
  3157. C++, MS-DOS / Watcom C/386, and MS-Windows configurations.
  3158.  
  3159. Removes the PCX file driver from the MS Windows executable, because
  3160. the static data segment exceeded 64K.
  3161.  
  3162. Makes some changes in the Unix System V platform file (gp_sysv.c) and
  3163. in time_.h and unixtail.mak to accommodate the 3B1.
  3164.  
  3165. Fonts
  3166. -----
  3167.  
  3168. Fixes bugs:
  3169.     - The Charter-Italic font was named bchi.pfa rather than
  3170. bchri.pfa.
  3171.     - The Cyrillic fonts (cyr.gsf, cyri.gsf) were omitted from
  3172. the fileset.
  3173.     - Ghostscript incorrectly assumed that all Type 1 fonts had a
  3174. FontInfo dictionary.
  3175.     - .loadfont used false PFBDecode, so a few .PFB fonts would
  3176. get errors because the first eexec byte would be whitespace.
  3177.  
  3178. Changes font2c and its supporting code so that compiled fonts are
  3179. location-independent.
  3180.  
  3181. Drivers
  3182. -------
  3183.  
  3184. Fixes bugs:
  3185.     - The margins for the H-P printers were still wrong.
  3186.     - The H-P drivers accidentally cleared the compression seed
  3187. row when switching compression modes.
  3188.     - Some of the H-P drivers used the wrong control codes for
  3189. skipping blank lines.
  3190.  
  3191. Adds user-supported drivers for the AT&T 3B1 console device, and for
  3192. the NEC P6+ printer.
  3193.  
  3194. Updates the SunView driver with a new version supplied by a(nother)
  3195. user.
  3196.  
  3197. Changes the X Windows driver so the Ghostscript window doesn't get
  3198. input focus.
  3199.  
  3200. Changes the common code for the printer drivers so that if it can
  3201. allocate a full bitmap but there isn't at least a minimum amount of
  3202. memory left afterwards, it switches to banding.
  3203.  
  3204. Changes the Windows driver so it handles devices with more than 8
  3205. bits per pixel.  (We haven't been able to test this.)
  3206.  
  3207. Adds a read-only PageCount device property (for printer devices
  3208. only).
  3209.  
  3210. Changes all Aladdin-supported drivers to clip drawing requests to the
  3211. ((0,0), (width,height)) rectangle of device space.
  3212.  
  3213. Interpreter
  3214. -----------
  3215.  
  3216. Fixes bugs:
  3217.     - Closing a NullEncode filter always gave an ioerror.
  3218.     - If a single-character name occurred 1 character before the
  3219. end of an input buffer, the character would be doubled.
  3220.     - The procedures in gs_statd.ps didn't use "bind".
  3221.     - Setting the page size didn't work properly with devices
  3222. with rotated coordinate systems.
  3223.     - If an error occurred, and the error object wasn't the last
  3224. element of its procedure, the interpreter would re-execute the error
  3225. object after running the error handler.
  3226.     - Memory devices didn't get resized if HWSize was changed,
  3227. leading to out-of-bounds memory accesses.
  3228.  
  3229. Moves revision and revisiondate from gs_init.ps to iinit.c.  Adds a
  3230. -v switch that just prints these out.
  3231.  
  3232. Arranges things so that if Ghostscript is reading from a pipe (`-'
  3233. switch on the command line) and encounters an error, it exits with
  3234. status 1 rather than 0.
  3235.  
  3236. Changes the interpreter interface so the caller explicitly passes a
  3237. pointer for storing an error object.
  3238.  
  3239. Library
  3240. -------
  3241.  
  3242. Fixes bugs:
  3243.     - The automatic adjustment of the scaling for variant paper
  3244. sizes caused the image to get expanded when it should have been
  3245. contracted, and vice versa.
  3246.     - The curve flattener insisted that each line segment be no
  3247. more than 2 x the flatness in length, leading to an enormous number
  3248. of segments even when not necessary for accuracy.
  3249.     - flattenpath and strokepath discarded a trailing moveto.
  3250.     - strokepath treated "0-width" lines as really having a width
  3251. of zero, rather than one pixel.
  3252.     - Buffered devices weren't closed and reopened if the amount
  3253. of buffer space was changed.
  3254.     - stroke used the line cap at the beginning of each subpath
  3255. even if the subpath was closed.
  3256.  
  3257. Removes the requirement that the clipping rectangle fall in the
  3258. non-negative quadrant of device space.  (This was causing problems
  3259. for Ghostview, but removing it required adding the extra clipping
  3260. step to the drawing routines in the drivers.)
  3261.  
  3262. Version 2.5 (8/18/92)
  3263. ===========
  3264.  
  3265. This version adds Type 1 hinting, CCITTFax encoding and decoding, and
  3266. Microsoft Windows support, as well as the usual minor improvements
  3267. and bug fixes.
  3268.  
  3269. Procedures
  3270. ----------
  3271.  
  3272. Fixes bugs:
  3273.     - GSIMPATH, SLZWD, and SLZWE were omitted from the VMS
  3274. makefiles, and GSIM2OUT was not removed.
  3275.     - landscap.ps messed up the current path.
  3276.  
  3277. Adds new switches:
  3278.     -dSAFER disables file writing and directory modification.
  3279.     -dESTACKPRINT causes errors to print the execution stack with
  3280. == instead of =.
  3281.     -sOutputFile=<string> replaces -sOUTPUTFILE (which is still
  3282. recognized) for setting the output file or pipe for the default
  3283. (printer) device.
  3284.     -sPAPERSIZE=<sizename> initializes the paper size.
  3285.     -dBufferSpace=<number> sets the buffer size for the default
  3286. (printer) device.
  3287.  
  3288. For Unix systems, changes the directories in GS_LIB_DEFAULT from
  3289. `pwd` to $(gsdatadir), i.e., normally $(datadir)/ghostscript, where
  3290. datadir is normally /usr/local/lib.
  3291.  
  3292. Adds a note in the header file to the effect that the X Windows
  3293. driver expects to find header files in $(XINCLUDE)/X11, not in
  3294. $(XINCLUDE).
  3295.  
  3296. Changes -q so it defines QUIET as true instead of null (so it can be
  3297. used in the middle of the command line as well as at the beginning).
  3298.  
  3299. Renames the history.doc file as NEWS.
  3300.  
  3301. Utilities
  3302. ---------
  3303.  
  3304. Platforms
  3305. ---------
  3306.  
  3307. Fixes bugs:
  3308.     - The stack size was not getting increased on the Watcom
  3309. platform.
  3310.  
  3311. Removes "b" from the scratch file opening modes in gp_unix.c and
  3312. (conditionally) in gdevprn.c, to pacify the DECstation Ultrix system.
  3313.  
  3314. Adds a makefile (bcwin.mak) and a platform file (gp_mswin.c) for
  3315. Microsoft Windows.
  3316.  
  3317. On MS-DOS platforms (including Windows), uses the TEMP environment
  3318. variable to designate the directory for scratch files.
  3319.  
  3320. Changes std.h so that the VMS C compiler uses function prototypes and
  3321. 'const'.
  3322.  
  3323. Changes the VMS cc makefile so it doesn't use ansi2knr.
  3324.  
  3325. Fonts
  3326. -----
  3327.  
  3328. Fixes bugs:
  3329.     - findfont left an extra entry on the stack if it couldn't
  3330. find the default font.
  3331.  
  3332. Renames bchi, ncri, and puti as bchri, ncrri, and putri, to conform
  3333. with the naming scheme for other fonts.
  3334.  
  3335. Adds $(CCFLAGS) to the command line used for compiling fonts.
  3336.  
  3337. Converts the .pfa fonts (CharterBT, IBM Courier, and Utopia) to .gsf,
  3338. by removing eexec encryption and also removing some mysterious
  3339. unmapped characters from Courier.  This makes these fonts work with
  3340. DISKFONTS.
  3341.  
  3342. Changes the implementation of compiled fonts so they are read-only
  3343. and sharable (no external references).  (They are, however, not
  3344. position-independent.)
  3345.  
  3346. Provides a way to use compiled fonts on platforms that limit the
  3347. number of characters in an identifier.
  3348.  
  3349. Adds public-domain Cyrillic and Cyrillic-Italic fonts.
  3350.  
  3351. Adds a 'userdict begin' to .loadfont, because Type 3 fonts produced
  3352. by Fontographer expect a writable dictionary on the top of the stack.
  3353.  
  3354. Changes definefont for Type 1 fonts to insert UnderlinePosition and
  3355. UnderlineThickness entries in FontInfo if they are absent, because
  3356. many word processors incorrectly assume these entries are present.
  3357.  
  3358. Drivers
  3359. -------
  3360.  
  3361. Fixes bugs:
  3362.     - The documentation in use.doc said that the densities for
  3363. 9-pin Epson printers were 60x60 to 240x60, rather than 60x72 to
  3364. 240x72.
  3365.     - gdevprn.c smashed one byte beyond the end of the string
  3366. given as the OutputFile device property.
  3367.     - The X11 driver used XVisualIDFromVisual, which is not
  3368. defined in X11R3.
  3369.     - The SunView driver modified the input data, which was
  3370. declared as const.
  3371.     - The LaserJet IIP and III drivers shifted the page 185
  3372. pixels to the left and 0.25" down, because the initialization string
  3373. was incorrect.
  3374.     - The PCX driver wrote 16-bit values using the byte ordering
  3375. of the platform, rather than always LSB first.
  3376.     - For vertical spacing, the LaserJet and DeskJet drivers used
  3377. a command that spaces N/300", rather than N scan lines, but gave it a
  3378. parameter in scan lines.
  3379.     - The VESA driver didn't allocate a full 256-byte buffer for
  3380. reading the mode information from the BIOS, causing the stack to get
  3381. smashed by newer VESA implementations.
  3382.     - The VESA driver didn't use the scan line length returned by
  3383. the BIOS, causing garbage output for some cards and some resolutions.
  3384.     - The generic printer driver didn't free the bitmap when
  3385. closing the device, if it fit entirely in memory.
  3386.     - The PaintJet driver allocated its data areas on the stack
  3387. instead of with gs_malloc.
  3388.     - The generic printer driver didn't attempt to increase the
  3389. buffer size if it was too small.
  3390.     - The band list driver didn't split large bitmaps properly,
  3391. leading to garbled characters at high resolutions.
  3392.     - The GIF and PCX drivers used a color map that often turned
  3393. gray colors into non-grays.
  3394.  
  3395. Changes the default put_props procedure so that if the device is
  3396. open, setting HWSize and/or HWResolution closes the device and
  3397. reopens it.
  3398.  
  3399. Adds a driver for Microsoft Windows 3.n.
  3400.  
  3401. Updates the 'cdj' and 'dj500c' DeskJet 500C drivers with new versions.
  3402. (This are user-contributed drivers.)
  3403.  
  3404. Changes gdev_prn_put_props so OutputFile can be changed dynamically.
  3405.  
  3406. Updates the DEC LN03 driver to also handle the LA50 and LA75.  (This
  3407. is a user-contributed driver with a FSF copyright.)
  3408.  
  3409. Changes the LaserJet/DeskJet driver so that -DA4 in the makefile
  3410. makes A4 paper the default.  The driver now also sends an appropriate
  3411. page size selection command to the printer if the printer supports it.
  3412.  
  3413. Changes all the Aladdin-supported drivers to return appropriate error
  3414. codes rather than -1.
  3415.  
  3416. Adds a driver for the S3 86C911, a PC graphics accelerator used in
  3417. the popular Diamond Stealth board.  This is the first driver that
  3418. uploads character bitmaps to a device; others will probably follow.
  3419.  
  3420. Adds user-supplied code to the Epson driver so it will do triple
  3421. passes on 9-pin printers for higher resolution.
  3422.  
  3423. Adds user-supplied code for the PaintJet XL to the PaintJet driver.
  3424.  
  3425. Interpreter
  3426. -----------
  3427.  
  3428. Fixes bugs:
  3429.     - zdps1.c didn't include alloc.h.
  3430.     - On 32-bit systems, if maxlength of a dictionary was less
  3431. than the actual allocated space, length could become larger than
  3432. maxlength.
  3433.     - flushfile didn't actually flush data when reading.
  3434.     - The ASCII85Decode filter signalled EOF prematurely.
  3435.     - The scanner interpreted .3D.glorp as the number 0.3, rather
  3436. than as a name.
  3437.     - Closing a file freed the stream structure, creating
  3438. dangling references if there were other file objects pointing to the
  3439. same stream.
  3440.     - eexec called handleerror if an error occurred, instead of
  3441. letting the error propagate to an enclosing stopped.
  3442.     - gs.h made perror illegal, instead of defining it in terms
  3443. of strerror.
  3444.     - One-character names weren't being allocated at
  3445. initialization, so they could be left dangling after a restore.
  3446.     - Internal gsaves (i.e., the ones in show and setcachedevice)
  3447. didn't also save istate, so setfont inside a BuildChar procedure
  3448. might cause the font outside to get changed.
  3449.     - The allocator incorrectly freed objects in the current
  3450. chunk that were older than the current save.
  3451.     - mark was just an object, rather than an operator, so 'bind'
  3452. didn't bind it.  (This is theoretically a problem for null, true, and
  3453. false also, but even more unlikely to be a problem in practice.)
  3454.     - packed_get didn't cast packed integers to int, so negative
  3455. integer elements of packed arrays came out wrong.
  3456.     - quit just did a gs_exit, instead of returning to the driver
  3457. in an orderly way.
  3458.     - Because check_type_access checked for errors in the wrong
  3459. order, sometimes type errors were reported as access errors.
  3460.     - eq didn't check for stack underflow.
  3461.     - Some of the stream_procs structures weren't properly
  3462. declared const, leading to link errors on VMS.
  3463.  
  3464. Implements currentcolor, currentcolorspace, setcolor, and
  3465. setcolorspace (for DeviceGray, DeviceRGB, and DeviceCMYK only).
  3466.  
  3467. Implements the dictionary form of image and imagemask.  All the pairs
  3468. in the Decode array must be the same; Interpolate is ignored.  The
  3469. only supported color spaces are DeviceGray, DeviceRGB, and
  3470. DeviceCMYK.
  3471.  
  3472. Implements files as allowable sources for the image operators.
  3473.  
  3474. Removes the index field from the name structure, moving it to the
  3475. 'size' field of name refs.
  3476.  
  3477. Changes the unread/sungetc operation to require that the character be
  3478. the same as the last one read from the file.
  3479.  
  3480. Adds fflush calls to some debugging printout routines, because Unix
  3481. sometimes buffers terminal output.
  3482.  
  3483. Implements the CCITTFaxEncode and CCITTFaxDecode filters.  Implements
  3484. the general case of the SubFileDecode filter.
  3485.  
  3486. Changes definefont to treat a UniqueID of 0 as equivalent to no
  3487. UniqueID, because Fontographer output apparently often violates the
  3488. specification in this way.
  3489.  
  3490. Changes the default printer screen from 32.5 to 46 cells/inch.  (The
  3491. old value was appropriate for a hand-rotated cell with two spots in
  3492. it.)
  3493.  
  3494. Changes the utility routines to allow an integral real wherever an
  3495. integer parameter is expected in a dictionary, because Fontographer
  3496. produces fonts that violate the Adobe specification in this way.
  3497.  
  3498. Adds a `dosio' feature that provides direct access to memory and to
  3499. I/O ports under MS-DOS.  (This feature is not included in the
  3500. standard executables, of course.)
  3501.  
  3502. Changes the default character cache limit to a 1/4" x 1/4" character
  3503. at the default resolution, rather than basing it on the preallocated
  3504. cache size.
  3505.  
  3506. Removes support for t_color objects, which haven't actually been used
  3507. for several releases.
  3508.  
  3509. Implements setcmykcolor and currentcmykcolor as operators, so they
  3510. will interact properly with setcolorspace and currentcolorspace.
  3511.  
  3512. Changes the name of the file.h header file to files.h, to work around
  3513. a bug in the VMS header library.
  3514.  
  3515. Adds command line switches @file (to treat file as more command line,
  3516. to get around the DOS 128-character command line limit) and -ffile
  3517. (so one can specify file names that begin with - or @).
  3518.  
  3519. Changes the PFBDecode filter so it takes an additional boolean that
  3520. says whether or not to convert binary packets to hex.  (Conversion to
  3521. hex and back to binary accounted for a substantial amount of the time
  3522. required to load .PFB fonts.)
  3523.  
  3524. Splits off `copydevice' as a separate operator again.
  3525.  
  3526. Library
  3527. -------
  3528.  
  3529. Fixes bugs:
  3530.     - In the VMS environment, string_.h used its own prototypes
  3531. for the str... and mem... functions instead of <string.h>
  3532.     - gx_alloc_char_bits declared cdsize as long, but didn't
  3533. shorten it when passing it to shorten_cached_char.
  3534.     - Stroking didn't suppress fattening of the lines.
  3535.     - kshow didn't update the cached CTM information in the show
  3536. enumerator when returning from the callout, so further characters
  3537. could get drawn in the wrong place.
  3538.     - When a memory device returned its initial matrix, it
  3539. smashed the padding fields, which contained the interpreter's type
  3540. information.
  3541.     - setcachedevice didn't set the initial matrix in the cache
  3542. memory device.
  3543.     - image_set_rgb (in the image operators) didn't do a
  3544. gx_color_from_rgb, so in principle one could sometimes get incorrect
  3545. colors in an image.
  3546.     - The decision about whether or not to cache a character
  3547. bitmap incorrectly compared the character size against cmax rather
  3548. than cdata_size.
  3549.     - show didn't reset the in_cachedevice flag in the graphics
  3550. state, so characters rendered by a recursive show were never cached.
  3551.     - clip and eoclip didn't release the intermediate flattened
  3552. clip path, causing memory to be lost.
  3553.     - The tile_diff routine didn't handle the case of two
  3554. identical tiles properly; this produced garbage in the band list
  3555. file.
  3556.     - stringwidth didn't round the character origin to an
  3557. integral pixel; this interacted badly with hinting, causing
  3558. improperly hinted characters to wind up in the cache.
  3559.     - Bitmaps (including characters) were displaced, as well as
  3560. being clipped, if they intersected the top of a clipping region.
  3561.     - In gxclist and gdevmem1, the raster computation (although
  3562. not the result) could overflow an int on 16-bit machines.
  3563.  
  3564. Implements decoding (sample mapping) for image and imagemask.
  3565.  
  3566. Implements hinting for Type 1 fonts, based on (but not copying) the
  3567. algorithms from the X11R5 tape.
  3568.  
  3569. Changes curve rasterizing to use sampling, rather than recursive
  3570. subdivision, for characters.  This produces noticeably better output.
  3571. Speed penalty for non-cached characters is less than 10% at display
  3572. resolutions, up to 50% for 300 dpi printers.
  3573.  
  3574. Implements gs_setcmykcolor and gs_currentcmykcolor.  These are
  3575. semi-fake, since they simply convert the color to and from RGB, but
  3576. the former does set the current color space properly.
  3577.  
  3578. Changes clipping regions so they use the any-part-of-pixel rule
  3579. rather than the center-of-pixel rule.  This helps avoid dropouts when
  3580. using very small regions.
  3581.  
  3582. Implements stroke adjustment.
  3583.  
  3584. Version 2.4.2 (5/8/92)
  3585. =============
  3586.  
  3587. This is another quick release.  It finally fixes rotated halftone
  3588. screens, and cleans up a few minor problems from 2.4.1.
  3589.  
  3590. This release is being distributed only to beta testers and commercial
  3591. licensees, since I don't want to be distracted from working on 2.5.
  3592.  
  3593. Procedures
  3594. ----------
  3595.  
  3596. Fixes bugs:
  3597.     - UTRACE still appeared in the VMS makefiles.
  3598.     - The support files (*.bat, *.doc, *.gsf, *.ps, Fontmap,
  3599. COPYING, README) weren't included in the MS-DOS tar file.
  3600.     - The Unix install script didn't install landscap.ps.
  3601.  
  3602. Replaces the type1imagepath operator with PostScript code (impath.ps,
  3603. type1ops.ps) based on the new .imagepath operator.
  3604.  
  3605. Renames LICENSE as COPYING.
  3606.  
  3607. Utilities
  3608. ---------
  3609.  
  3610. Fixes bugs:
  3611.     - pcharstr.ps had an occurrence of Subrs rather than /Subrs,
  3612. causing it to not print the Subrs, or to get an error if there were
  3613. none.
  3614.     - font2c.ps didn't get the const declarations for string
  3615. dictionaries quite right.
  3616.     - The missing newline at the end of gsbj.bat confused GNU
  3617. diff.
  3618.     - ansi2knr would go into an infinite loop if a statement
  3619. exceeded its internal buffer size.
  3620.     - Compiled fonts would get processed by ansi2knr, which
  3621. messed them up.
  3622.  
  3623. Platforms
  3624. ---------
  3625.  
  3626. Fixes bugs:
  3627.     - Ghostscript didn't supply equivalents for rename and
  3628. gettimeofday, which some System V platforms lack.
  3629.     - The missing newline at the end of gp_dosfb.c confused GNU
  3630. diff.
  3631.  
  3632. Changes the Borland makefiles so that stack checking is only enabled
  3633. if DEBUG or TDEBUG is set.
  3634.  
  3635. Fonts
  3636. -----
  3637.  
  3638. Changes the names of the Utopia fonts from utrg/utb/utbi/uti to
  3639. putr/putb/putbi/puti, for consistency with the rest of the font names.
  3640. Changes cour/courb/courbi/couri to ncrr/ncrb/ncrbi/ncri likewise.
  3641.  
  3642. Replaces the Charter fonts with the CharterBT fonts donated by
  3643. Bitstream to the X11R5 distribution.
  3644.  
  3645. Adds font aliasing capability to Fontmap.  Replaces
  3646. Courier-[Bold]Oblique and ZapfChancery-MediumItalic by aliases.
  3647.  
  3648. Changes the FontBBox of the Hershey fonts to be an executable, rather
  3649. than a literal, array.
  3650.  
  3651. Drivers
  3652. -------
  3653.  
  3654. Fixes bugs:
  3655.     - The GIF driver omitted a `private' on the definition of
  3656. gif_print_page.
  3657.     - The GIF driver wrote 16-bit values using the byte ordering
  3658. of the platform, rather than always LSB first.
  3659.     - George Cameron's DeskJet 500C driver had an incorrect
  3660. control sequence for skipping blank lines.
  3661.  
  3662. Adds 'const' in many places, including the tile and bitmap arguments
  3663. of the tile_rectangle, copy_mono, and copy_color driver routines.
  3664. THIS IS A DRIVER INTERFACE CHANGE.  (Printer drivers are not
  3665. affected, since they don't implement these routines.)
  3666.  
  3667. Adds a driver for the Trident TVGA.
  3668.  
  3669. Interpreter
  3670. -----------
  3671.  
  3672. Fixes bugs:
  3673.     - alloc_free sometimes incorrectly chose to put an unaligned
  3674. block in an old segment on a freelist.
  3675.     - The default undercolor removal function returned its
  3676. argument rather than returning 0.
  3677.  
  3678. Adds NullEncode and SubFileDecode to the standard filters, since
  3679. bdftops uses the latter.
  3680.  
  3681. Adds RunLengthEncode and RunLengthDecode to the optional filters.
  3682.  
  3683. Removes the type1imagepath operator.  (It is still available as
  3684. PostScript code, impath.ps.)  Replaces it with a simpler outline
  3685. tracing operator .imagepath.
  3686.  
  3687. Adds 'const' in many places.
  3688.  
  3689. Makes fileposition (but not setfileposition) legal for NullEncode
  3690. filters.
  3691.  
  3692. Changes the default transfer function for high-resolution devices
  3693. from the identity function to the square root function.
  3694.  
  3695. Moves array_get from zgeneric.c to iutil.c.
  3696.  
  3697. Changes uses of fopen to add a "b" to the access mode, rather than
  3698. relying on the _fmode global variable on MS-DOS platforms.
  3699.  
  3700. Allows use of the -Z switch even when gsmain.c wasn't compiled with
  3701. -DDEBUG, since other modules might have been.
  3702.  
  3703. Reorganizes gs.c and gsmain.c so that the latter can be used in
  3704. server environments.
  3705.  
  3706. Replaces all uses of stdin/out/err with gs_stdin/out/err.
  3707.  
  3708. Makes the number of permanent entries on the dictionary stack a
  3709. parameter, to allow inserting globaldict in the future.
  3710.  
  3711. Changes BlueShift in the Type 1 font Private dictionary to allow real
  3712. numbers.  (This differs from the Adobe specification, but at least
  3713. one commercial font has a real number for BlueShift.)
  3714.  
  3715. Library
  3716. -------
  3717.  
  3718. Fixes bugs:
  3719.     - The doubling check in init_ht (gxht.c) still sometimes
  3720. thought there was enough room to double the tile when there actually
  3721. wasn't.
  3722.     - Rotated halftone screens didn't work.
  3723.     - gxarith.h used #ifdef vax, rather than #if
  3724. !arch_floats_are_IEEE, to test whether IEEE floats were being used.
  3725.     - pathforall didn't report a trailing moveto.
  3726.  
  3727. Replaces gs_type1imagepath with gs_imagepath.
  3728.  
  3729. Allows sOUTPUTFILE=-, meaning output to stdout.
  3730.  
  3731. Adds 'const' in many places.
  3732.  
  3733. Replaces all uses of stdin/out/err with gs_stdin/out/err.
  3734.  
  3735. Version 2.4.1 (4/21/92)
  3736. =============
  3737.  
  3738. This is a quick release to fix minor problems discovered in 2.4, and
  3739. to add a few improvements that didn't quite make it into 2.4.  It
  3740. also adds GIF and PCX file support.
  3741.  
  3742. Procedures
  3743. ----------
  3744.  
  3745. Fixes bugs:
  3746.     - Some makefile dependencies, and the ccgs script, caused trouble
  3747. for parallel versions of `make'.
  3748.     - Compiling genarch with -O with gcc on the RS/6000 produced a
  3749. buggy executable.
  3750.  
  3751. Fixes some minor problems in make.doc.
  3752.  
  3753. Adds DEVICE_DEVS2..5 to handle long device lists.
  3754.  
  3755. Removes the need to set GS_RUN_EXE when using the Watcom compiler on
  3756. MS-DOS systems.
  3757.  
  3758. Gets rid of gs_ccfnt.ps, merging its function into gs_fonts.ps.
  3759.  
  3760. Gets rid of gconfig.ps; this information is now compiled in gconfig.c.
  3761.  
  3762. Utilities
  3763. ---------
  3764.  
  3765. Fixes bugs:
  3766.     - The palette for pstoppm in 8-bit mode didn't contain all 8
  3767. primary colors.
  3768.     - font2c used just values_ to mean &values_[0]; some compilers
  3769. couldn't handle this.
  3770.  
  3771. Makes font2c insert `const' in many appropriate places.
  3772.  
  3773. Drivers
  3774. -------
  3775.  
  3776. Fixes bugs:
  3777.     - The SunView driver had not been updated properly for 2.4 and was
  3778. pretty thoroughly broken.
  3779.     - None of the printer drivers worked properly with the Watcom
  3780. compiler, because stdprn was doing \n -> \r\n substitution.
  3781.     - If the generic printer driver couldn't allocate the requested
  3782. size command list buffer, it gave up rather than trying to allocate a
  3783. smaller buffer.
  3784.     - The SuperVGA drivers (except for the VESA driver) didn't
  3785. work with the Watcom compiler, because a couple of places in the
  3786. drivers weren't truncating the offset of "segmented" pointers
  3787. properly.
  3788.     - Some of the H-P used <esc>*b#Y rather than <esc>*p+#Y for
  3789. vertical positioning; this apparently is wrong, at least for the
  3790. LJIIp.
  3791.  
  3792. Removes the dependence of the X Windows driver on Xt, Xext, and Xmu.  As a
  3793. result, Ghostscript will not install a standard colormap itself, but it
  3794. will use one if one is already installed.
  3795.  
  3796. Adds a set of drivers for Portable Bitmap, Graymap, and Pixmap file
  3797. formats.
  3798.  
  3799. Adds drivers for monochrome, EGA/VGA-style, and SuperVGA-style PCX
  3800. file formats.
  3801.  
  3802. Adds drivers for monochrome and 256-color GIF file formats.
  3803.  
  3804. Fonts
  3805. -----
  3806.  
  3807. Adds ZapfChancery-MediumItalic as a copy of ZapfChancery-Oblique.
  3808.  
  3809. Interpreter
  3810. -----------
  3811.  
  3812. Fixes bugs:
  3813.     - A value with l_new set could 'escape' to save level 0 on a
  3814. stack; if stored, it prevented the slot from being saved and restored
  3815. properly.
  3816.     - 16#7fffffff + 1 gave the floating point equivalent of -2^31, not
  3817. 2^31.
  3818.     - The PFBDecode filter computed the packet length incorrectly if
  3819. the 0x8000-bit of the length was set.
  3820.     - 5-byte numbers in Type 1 CharStrings complained of a rangecheck
  3821. if they exceeded 16 bits, rather than if they exceeded the integer part of
  3822. a fixed.
  3823.     - (, ), and \ appearing in file name arguments in the command
  3824. line did not work properly.
  3825.  
  3826. Adds 'const' in many places.
  3827.  
  3828. Changes the random number generator to be the same as the one used in
  3829. Level 2 PostScript (as reported by Ed Taft on comp.lang.postscript).
  3830.  
  3831. Exits with code 1 rather than code 0 on an unrecoverable error detected at
  3832. the PostScript level.
  3833.  
  3834. Makes dictionaries expand automatically when they fill up.
  3835.  
  3836. Adds gp_exit to complement gp_init.
  3837.  
  3838. Changes dictionaries to always allocate a power of 2 entries on
  3839. 32-bit machines.  Changes the name table to allocate indices
  3840. scattered, so dictionary lookup doesn't have to do a multiply to
  3841. scramble the index.
  3842.  
  3843. Changes the handling of currentfile to do "shallow binding" so stack
  3844. searching is almost never required.
  3845.  
  3846. Library
  3847. -------
  3848.  
  3849. Fixes bugs:
  3850.     - arc and arcn got a numeric exception if the radius was zero.
  3851.     - The undocumented 15 opcode in Type 1 fonts wasn't ignored.
  3852.     - PaintType 3 wasn't allowed.  (It isn't clear what it should
  3853. mean; we treat it as equivalent to 0.)
  3854.     - The VAX/VMS C compiler was generating incorrect code for the
  3855. chi_bits and cmask macros in gdevmem, producing incorrect output.
  3856.     - If the result of the slow algorithm for intersecting clipping
  3857. paths was a rectangle, the wrong thing happened (cbox didn't get set).
  3858.     - gx_path_is_rectangle didn't recognize open rectangles.
  3859.     - clist_change_tile didn't check properly whether the tile
  3860. size had changed, so changing the screen could produce invalid band
  3861. files.
  3862.     - The image operators did the wrong thing in the 1-for-1
  3863. case, interleaving N bytes of data with 7*N bytes of garbage.
  3864.     - stroke sometimes handled bevel and miter joins wrong in
  3865. reflected coordinate systems.
  3866.     - init_ht checked incorrectly whether there was enough room
  3867. to Y-replicate tiles, so sometimes it did it when it shouldn't have.
  3868.     - stroke sometimes thought lines were thin when they weren't.
  3869.  
  3870. Adds 'const' in many places.
  3871.  
  3872. Adds support for 2- and 4-bit-per-pixel memory devices.
  3873.  
  3874. Version 2.4 (3/25/92)
  3875. ===========
  3876.  
  3877. This is a major release that adds SuperVGA support, support for Metrics,
  3878. settable device properties, and incremental font loading.  It also
  3879. includes important performance improvements, based on rewrites of some key
  3880. algorithms, and quite a few new Level 2 / Display PostScript facilities.
  3881.  
  3882. Procedures
  3883. ----------
  3884.  
  3885. Fixes bugs:
  3886.     - The rule for compiling gconfig.c didn't include the -I switches.
  3887.     - .bat files were being distributed with a \n line terminator
  3888. rather than \r\n.
  3889.     - A CLOSE MODULE_LIST was needed after END_COMPILE: in the VMS
  3890. command files.
  3891.     - Unix systems couldn't handle multiple drivers with overlapping
  3892. sets of files.
  3893.     - -s<name> defined <name> as a null, rather than as an empty string.
  3894.  
  3895. Adds gconfig.ps to the list of needed configuration files.
  3896.  
  3897. Changes the way that the makefile handles nested .h files, so that it
  3898. doesn't have to `touch' them.
  3899.  
  3900. Adds the loadallfonts procedure to gs_fonts.ps.
  3901.  
  3902. Changes the standard DOS configuration to include VGA, EGA, VESA, Epson,
  3903. BubbleJet, and H-P printer drivers.
  3904.  
  3905. Renames ghost.mak as gs.mak, and gdevs.mak as devs.mak.
  3906.  
  3907. Adds a USE_ASM flag so that one can build a DOS version of Ghostscript
  3908. without having an assembler.
  3909.  
  3910. Splits off common code from the two MS-DOS makefiles into tccommon.mak.
  3911.  
  3912. Replaces the COPYING and LICENSE files with a new LICENSE file containing
  3913. version 2 of the GNU General Public License.
  3914.  
  3915. Removes DEVICES and DEVICE_OBJS from the makefiles, since they are no
  3916. longer needed.
  3917.  
  3918. Adds a GS_DEVICE environment variable to supply a default device name if
  3919. desired.
  3920.  
  3921. Adds ansihead.mak and unix-ansi.mak, to parallel [g]cc-head.mak and
  3922. unix-[g]cc.mak, for other ANSI C compilers.
  3923.  
  3924. Changes the way that optional features are defined in the makefiles, so
  3925. that they actually work.
  3926.  
  3927. Adds support for the Watcom C/386 compiler.
  3928.  
  3929. Allows # in the command line as equivalent to =, to compensate for
  3930. brain-damaged MS-DOS shell.
  3931.  
  3932. Adds -sOUTPUTFILE= to set the output file or pipe.
  3933.  
  3934. Adds -dWRITESYSTEMDICT to leave systemdict writable.
  3935.  
  3936. Utilities
  3937. ---------
  3938.  
  3939. Fixes bugs:
  3940.     - pcharstr.ps insisted on having Subrs be present in the font.
  3941.     - pcharstr.ps decoded negative numbers between -108 and -1131
  3942. incorrectly.
  3943.     - pfbtogs.ps didn't handle packets longer than 64K correctly.
  3944.  
  3945. Changes the bdftops utility so that it makes entries for UnderlinePosition
  3946. and UnderlineThickness in FontInfo, and so that it always records a
  3947. FullName (the FontName if no other is provided).
  3948.  
  3949. Changes the name of the pfbtops utility to pfbtogs, because groff already
  3950. includes a program called pfbtops.
  3951.  
  3952. Adds the gslp utility for doing "line printing" of text files, similar to
  3953. enscript + lpr.
  3954.  
  3955. Adds a new variable DITHERPPI that enables a different dither pattern,
  3956. claimed to be better for printers.
  3957.  
  3958. Adds the font2c utility for compiling Type 1 fonts into C, so they can be
  3959. linked into an executable rather than loaded dynamically.
  3960.  
  3961. Drivers
  3962. -------
  3963.  
  3964. Fixes bugs:
  3965.     - gdev_prn_copy_scan_lines was erroneously masking the last byte
  3966. of data even on color printers, as was paintjet_print_page.
  3967.     - The TruFax driver had a couple of compilation errors, since it
  3968. hadn't been compiled in a while.
  3969.     - The BGI driver sometimes didn't consult BGIPATH when looking for
  3970. .BGI files.
  3971.     - initclip did the wrong thing with memory devices.
  3972.     - The BGI driver didn't look in BGIDIR for .BGI files.
  3973.     - The Epson driver didn't set the right margin properly with
  3974. ESC+Q.
  3975.     - The BJ-10e driver was badly broken.
  3976.     - gdev_prn_open/close_printer didn't reset the command list file,
  3977. so it was taking quadratic time to print multi-page documents.
  3978.  
  3979. Adds color to the SunView driver.
  3980.  
  3981. Adds selectable resolution (75, 100, 150, or 300 DPI) to the
  3982. DeskJet/LaserJet driver.
  3983.  
  3984. Changes gssetdev so that drivers can specify special libraries to be
  3985. loaded, as well as object files.
  3986.  
  3987. Adds a driver for VESA-compliant SuperVGA displays.  This driver handles
  3988. all resolutions from 640 x 400 up to 1280 x 1024, in 256-color mode.  The
  3989. default is VGA resolution (640 x 480).
  3990.  
  3991. Adds a driver for the ATI Wonder SuperVGA card, and for SuperVGA cards
  3992. using the Tseng Labs ET3000 or ET4000 chip such as the STB VGA EM-16 and
  3993. the Orchid ProDesigner II (256-color modes only).
  3994.  
  3995. Adds a driver for Trident and Tseng Labs SuperVGA cards in 800 x 600,
  3996. 16-color modes (for cards with only 256K of memory).
  3997.  
  3998. Adds user-contributed drivers for the Ricoh 4081, DEC LN03, Canon LBP-8II,
  3999. and H-P DeskJet 500C printers.
  4000.  
  4001. Adds Tim Theisen's Ghostview changes to the X11 driver.
  4002.  
  4003. MAKES NON-BACKWARD-COMPATIBLE CHANGES TO THE DRIVER PROCEDURE INTERFACE as
  4004. follows:
  4005.  
  4006.     - Changes map_rgb_color and map_color_rgb to always work in a
  4007.         16-bit color value space, rather than a space defined by the
  4008.         maximum number of distinct colors provided by the device.
  4009.  
  4010.     - Adds an argument to the output_page procedure to indicate
  4011.         whether the procedure is being called for copypage or
  4012.         showpage, and a num_copies argument.
  4013.  
  4014.     - Adds a gx_bitmap_id to the copy_ and tile_ procedures, so that
  4015.         drivers can cache bitmaps in the server or device if they want
  4016.         to.
  4017.  
  4018.     - Removes fill_trapezoid and tile_trapezoid.
  4019.  
  4020.     - Adds a new get_bits procedure for reading the bits back from the
  4021.         driver buffer (when possible), replacing copy_scan_lines.
  4022.         This procedure takes a new argument describing padding and
  4023.         byte swapping, and returns a different value from
  4024.         copy_scan_lines.
  4025.  
  4026.     - Adds get_props and put_props procedures for accessing arbitrary
  4027.         additional properties of devices.  The interface is quite
  4028.         complex, but provides a great deal of flexibility.
  4029.  
  4030. See drivers.doc for details.
  4031.  
  4032. Changes gdev_mem_bytes_per_scan_line to gdev_prn_bytes_per_scan_line.
  4033.  
  4034. Adds a user-contributed driver for DigiBoard, Inc.'s fax software.
  4035.  
  4036. Fonts
  4037. -----
  4038.  
  4039. Changes Type1BuildChar so it uses the information from the Metrics
  4040. dictionary in the font, if Metrics is present.
  4041.  
  4042. Changes findfont (.loadfont) so it recognizes .PFB fonts and can load them
  4043. directly.  Also changes .loadfont to disable packing temporarily, because
  4044. some fonts rely on procedures being writable (!).
  4045.  
  4046. Interpreter
  4047. -----------
  4048.  
  4049. Fixes bugs:
  4050.     - The hypot function is not available on some Unix systems.
  4051.     - Ghostscript didn't flush and close files when exiting.
  4052.     - In statusdict, the /margins procedure used .leftmargin, but
  4053. /setmargins used .lmargin.
  4054.     - An out-of-range putinterval would simply do nothing, rather than
  4055. reporting an error.
  4056.     - If an attempt to allocate a block larger than the allocator's
  4057. chunk size (20K) failed, the allocator would erroneously think it had
  4058. succeeded.
  4059.     - The bind operator made the top-level procedure read-only, as
  4060. well as interior procedures.
  4061.     - gs.c copied 1 extra character for the value of strings defined
  4062. on the command line with -s...=, which could smash the first byte of the
  4063. next object in memory.
  4064.     - copying a dictionary erroneously required the maxlength of the
  4065. destination to be greater than or equal to the maxlength of the source,
  4066. rather than the length of the source.
  4067.     - undef didn't correctly decide when to mark a deleted entry as
  4068. deleted vs. free; as a result, some keys couldn't be looked up properly
  4069. after an undef.
  4070.     - type1encrypt and type1decrypt didn't set the size of the result
  4071. properly.
  4072.     - cvi and cvr didn't allow leading or trailing whitespace in
  4073. strings.
  4074.     - cvs didn't cause an error if the destination string was too
  4075. short.
  4076.     - Many operators didn't check correctly for stack underflow (off
  4077. by 1).
  4078.     - `for' used reals, rather than integers, if the limit was a real,
  4079. even if the initial value and increment were integers.
  4080.     - `restore' didn't properly invalidate copies of the save object
  4081. being restored from; `save dup restore restore' would crash.
  4082.     - `restore' sometimes didn't undo stores into matrices that were
  4083. stored into by operators.  (The identity matrix always had l_new set.)
  4084.     - readline gave a rangecheck if the input line exactly filled the
  4085. string.
  4086.     - `--' as the last switch on the command line caused a crash
  4087. rather than an error message.
  4088.     - On MS-DOS systems, filenameforall didn't handle patterns with a
  4089. drive or directory specifier properly.
  4090.     - stroke sometimes called gz_draw_line_fixed even if the line went
  4091. outside the clipping box by 1 pixel.
  4092.  
  4093. Changes the loop that binds procedure "operators" to entirely disable the
  4094. handling of the typecheck error, rather than to use stopped.  This cuts
  4095. initialization time significantly, and also eliminates about 35K of wasted
  4096. space (for saving the stacks).
  4097.  
  4098. Changes the version "operator" so it returns 47.0.  Adds "revision" to
  4099. define the Ghostscript version # x 100.
  4100.  
  4101. Adds gscurrentresolution and gssetresolution procedures for getting and
  4102. setting the device resolution.
  4103.  
  4104. Adds -r<res> and -r<xres>x<yres> as command line options for setting
  4105. device resolution.
  4106.  
  4107. Adds a facility for incrementally loading the individual CharStrings of a
  4108. Ghostscript font from the disk.  This can save a lot of memory, at the
  4109. expense of slower rendering.  (It is intended primarily for MS-DOS
  4110. systems.)
  4111.  
  4112. Changes findlibfile to return the name of the file that was actually
  4113. opened, as well as the file itself, when the operation succeeds.
  4114.  
  4115. Changes the name of the main entry to the interpreter from interpret to
  4116. gs_interpret, because of a conflict with a Data General library procedure.
  4117.  
  4118. Adds the .setmetrics operator to set the metrics for the current
  4119. character for Type 1 fonts.
  4120.  
  4121. Adds more LaserWriter-specific entries to statusdict.
  4122.  
  4123. Gives names to all the internal `operators', so they will print out
  4124. reasonably when an error occurs.
  4125.  
  4126. Extends the status operator to accept a string and return file
  4127. information, as defined for Level 2 PostScript.
  4128.  
  4129. Adds the filter operator and some specific filters: ASCII85Encode,
  4130. ASCII85Decode, ASCIIHexEncode, ASCIIHexDecode, eexecDecode, NullEncode,
  4131. PFBDecode, and the null case of SubFileDecode.
  4132.  
  4133. Extends the scanner to recognize the Level 2 << and >> tokens.
  4134.  
  4135. Adds a facility for extracting the text strings from a PostScript file and
  4136. writing them out in a simple format (selected by -dASCIIOUT, implemented
  4137. by gs_2asc.ps).
  4138.  
  4139. Implements all of the remaining Display PostScript facilities that are
  4140. also in Level 2 (i.e., everything in section A.1.3 of the PostScript
  4141. Language Reference Manual, Second Edition, that is not also in section
  4142. A.1.2).  The virtual memory operations are all stubs; the new halftone
  4143. options are not fully implemented.
  4144.  
  4145. Changes makeimagedevice to use a string of gray or RGB values, rather than
  4146. an array of color objects, to specify the palette.  Removes
  4147. currentgscolor and setgscolor from the interpreter, but leaves t_color
  4148. objects in, since they may be useful later.
  4149.  
  4150. Adds getdeviceprops and putdeviceprops for manipulating device properties.
  4151. Currently defined properties for all devices: InitialMatrix, HWResolution,
  4152. HWSize, Name.  Currently defined properties for printers: BufferSpace,
  4153. MaxBitmap, OutputFile.  OutputFile allows |command for piping on Unix
  4154. systems.
  4155.  
  4156. Removes deviceparams and makedevice.  Adds devicedefaultmatrix.
  4157.  
  4158. Implements reversepath.
  4159.  
  4160. Makes copy work on devices.
  4161.  
  4162. MS-DOS specific
  4163. - - - - - - - -
  4164.  
  4165. Fixes bugs:
  4166.     - iutilasm.asm wouldn't assemble with newer versions of MASM if
  4167. CPU_TYPE was set to 286 or above.
  4168.     - CPU_TYPE=386 didn't properly substitute the faster
  4169. multiply/divide routines under Turbo C++ or Borland C++, only under the
  4170. original Turbo C.
  4171.  
  4172. Library
  4173. -------
  4174.  
  4175. Fixes bugs:
  4176.     - A curve whose first and last points were the same wouldn't get
  4177. drawn at all.
  4178.     - A bug in the Turbo C++ compiler generated bad code when shifting
  4179. a long right by 1 bit.
  4180.     - If stroking a dashed line ever encountered a segment that was
  4181. completely blank, Ghostscript would indirect through a null pointer.
  4182.     - arc and arcn gave an error if the radius was negative.
  4183.     - stroke always used the general algorithm, even if the line was
  4184. guaranteed to be thin.
  4185.     - arc and arcn erroneously reduced the angles mod 360.
  4186.     - Very large or negative 32-bit numbers in Type 1 fonts didn't
  4187. work properly on MS-DOS systems (the ff0000 bits got set to zero). 
  4188.     - Color printer devices rendering entirely in memory only
  4189. allocated a monochrome-sized bitmap.
  4190.     - clip and eoclip didn't intersect the paths properly in the
  4191. general case.
  4192.     - charpath erroneously rounded the current point to an integral
  4193. value, causing characters to be spaced improperly.
  4194.     - The definition of max_color_param got some compilers confused.
  4195.     - charpath always used quadratic time and space, and dropped all
  4196. but the last character when used with a Type 3 font.
  4197.     - Stroking a path with a 180 degree angle would incorrectly miter
  4198. instead of beveling.
  4199.     - Type 1 fonts used the current flatness for curves, which could
  4200. produce bad (and inconsistent) results.
  4201.     - Stroking a degenerate line segment produced incorrect results.
  4202.  
  4203. Changes the character cache to use the UniqueID as the key, when
  4204. available, instead of the font pointer.  This dramatically improves
  4205. performance when fonts are getting removed and reloaded because of page
  4206. isolation with save/restore.
  4207.  
  4208. Removes some unnecessary casts to (float) from gsmatrix.c and gscoord.c.
  4209.  
  4210. Changes the Type 1 interpreter so that it rounds line and curve endpoints
  4211. to the center of the nearest half-pixel, and omits null line segments.
  4212. This both speeds up rendering at small sizes and improves output quality.
  4213.  
  4214. Changes gs_deviceparams to return resolution as well as extent; changes
  4215. gs_makedevice to accept resolution as well as extent.
  4216.  
  4217. Replaces the algorithm for approximating circular arcs with curves with a
  4218. more accurate one.
  4219.  
  4220. Changes gs_point and gs_rect to use doubles rather than floats.
  4221.  
  4222. Adds gs_setmetrics, for overriding Type 1 font metrics for the current
  4223. character.
  4224.  
  4225. Changes clipping to use lists of rectangles rather than path intersection.
  4226.  This makes a big difference when clipping bitmaps (including characters).
  4227.  
  4228. Changes the character cache to discard entries incrementally, rather than
  4229. clearing the entire cache when it fills up.
  4230.  
  4231. Changes the implementation of transfer functions to use a cached map,
  4232. built when the transfer function is set.  This makes transfer functions
  4233. work properly in all situations, including images.
  4234.  
  4235. Defines a .quit operator that takes an exit code, and redefines quit in
  4236. terms of it.
  4237.  
  4238. Adds support for 16-bit-per-pixel devices in gdevmem.
  4239.  
  4240. Adds gs_copydevice and gs_deviceinitialmatrix; removes gs_deviceparams and
  4241. gs_makedevice.
  4242.  
  4243. Changes setscreen to ensure that the cell is always at least 4x4 pixels in
  4244. size.
  4245.  
  4246. Version 2.3 (8/28/91)
  4247. ===========
  4248.  
  4249. This is a minor release to fix two bugs and add the PaintJet driver, which
  4250. didn't make it into 2.2.
  4251.  
  4252. Utilities
  4253. ---------
  4254.  
  4255. Changes the pstoppm utility so it counts pages correctly even in the
  4256. presence of arbitrary saves and restores.
  4257.  
  4258. Drivers
  4259. -------
  4260.  
  4261. Adds a new, "supported" PaintJet driver.
  4262.  
  4263. Changes the Epson driver to use ESC+D rather than ESC+\ for horizontal
  4264. positioning, since many printers don't support the latter.
  4265.  
  4266. Adds horizontal double-density (two-pass) printing to the Epson driver, so
  4267. it can do 240 x 60 and 360 x 180 densities.  (Vertical double density is
  4268. not supported yet.)
  4269.  
  4270. Version 2.2 (6/1/91)
  4271. ===========
  4272.  
  4273. The purpose of this release is to add save/restore, and a few
  4274. miscellaneous Level 2 P*stScr*pt features such as undef.  It also includes
  4275. major improvements in graphics quality and in handling of high-resolution
  4276. printers.
  4277.  
  4278. Procedures
  4279. ----------
  4280.  
  4281. Changes the version numbering to M.mpp rather than M.m.p, so that
  4282. `version' can be a real number for those programs that insist on it.
  4283.  
  4284. Renames ghost.ps as gs_init.ps, gfonts.ps as gs_fonts.ps, and statusd.ps
  4285. as gs_statd.ps.  The initialization files now all are named gs_*.ps.
  4286.  
  4287. Renames gdevs.{c,h,tl} as gconfig.{c,h,tl}.
  4288.  
  4289. Changes the relevant makefiles and command files so that a single build
  4290. can contain several drivers that share code, e.g., the Epson driver and
  4291. the DeskJet driver.
  4292.  
  4293. Changes gs_init.ps so it relies on an external gconfig.ps file rather than
  4294. making a specific test for the presence of Level 2 features.
  4295.  
  4296. Adds an entry for uglyr.gsf to the makefile.
  4297.  
  4298. Removes the distinction between CCA and CCNA, since most of the files now
  4299. contain constructs that require non-ANSI compilation on MS-DOS platforms.
  4300.  
  4301. Adds a `man' page for the ansi2knr utility.
  4302.  
  4303. Changes the documentation (use.doc) to show how to use -sDEVICE=<device>,
  4304. or the selectdevice procedure, to select devices by name.
  4305.  
  4306. Adds DEVICE_DEVS to the makefiles (analogous to DEVICES and DEVICE_OBJS).
  4307. This finally makes the make procedure fully automatic.
  4308.  
  4309. Adds the name of the initialization file (gs_init.ps) as a
  4310. platform-specific makefile parameter, GS_INIT.
  4311.  
  4312. Removes the test program gt.{c,tr} from the fileset, since it is not
  4313. useful to users.
  4314.  
  4315. Moves the Symbol encoding vector to a separate file (symbol_e.ps), from
  4316. which it is loaded when first used.
  4317.  
  4318. Changes the error handler so it can handle errors that occur while reading
  4319. the initialization files.
  4320.  
  4321. Extends ansi2knr so it can handle `void' and `...' in parameter lists.
  4322.  
  4323. Adds quit.ps to the set of installed files.
  4324.  
  4325. MS-DOS-specific changes
  4326. - - - - - - - - - - - -
  4327.  
  4328. Adds the VGA and BGI drivers to the standard MS-DOS configuration, and
  4329. makes VGA the default.
  4330.  
  4331. Adds a `+' and a newline at the end of gs.tr, to avoid problems with file
  4332. transfer programs or editors that add a newline at the end of files.
  4333.  
  4334. Changes the name of msdos.mak to turboc.mak, and creates a new tbcplus.mak
  4335. makefile for use with Turbo C++ and Borland C++.
  4336.  
  4337. Changes the extension of the loader response files from .tl to .tr.
  4338.  
  4339. Changes the default search path from c:/ghost and c:/ghost/fonts to c:/gs
  4340. and c:/gs/fonts.
  4341.  
  4342. Changes the directory separator from `|' back to ';', since it appears
  4343. that DOS can handle a ; in a command line if it is prefixed with \.
  4344.  
  4345. Unix-specific changes
  4346. - - - - - - - - - - -
  4347.  
  4348. Changes the uses of install in unixtail.mak so they only install a single
  4349. file at a time, which is all that the standard Unix install allows.
  4350.  
  4351. Removes the duplicate files (README/readme, LICENSE/license,
  4352. COPYING/copying, Fontmap/fontmap).
  4353.  
  4354. Changes the ld flags from LDPLAT to LDFLAGS.
  4355.  
  4356. Adds XCFLAGS and XLDFLAGS.  These are concatenated with CFLAGS and LDFLAGS
  4357. respectively.  The intention is that they be set from the `make' command
  4358. line if desired.
  4359.  
  4360. VMS-specific changes
  4361. - - - - - - - - - -
  4362.  
  4363. Repairs the omission of ZPACKED from the VMS build lists.
  4364.  
  4365. Drivers
  4366. -------
  4367.  
  4368. Fixes bugs:
  4369.     - The SunView driver produced semi-garbage on little-endian
  4370. platforms (Sun-386i) because it didn't swap the bit order.
  4371.     - The X driver would dump core if it couldn't open the display and
  4372. the DISPLAY environment variable wasn't set.
  4373.     - The X driver relied on white = 0, black = ones in a couple of
  4374. places;
  4375.     - The X driver would return an error, instead of clipping, if
  4376. asked to display outside the window.
  4377.     - The X driver would create inappropriately sized windows, because
  4378. it believed the server's report of the screen resolution.
  4379.  
  4380. Adds Fran Taylor's Private Eye driver to gdevs.mak and the fileset (not
  4381. supported by Aladdin Enterprises).
  4382.  
  4383. Adds Neil Ostroff's TruFax driver to gdevs.mak and the fileset (not
  4384. supported by Aladdin Enterprises).
  4385.  
  4386. Makes the scratch file template for the printer drivers a per-platform
  4387. quantity (gp_scratch_file_name_template).  Puts the default scratch files
  4388. for Unix in /usr/tmp rather than /tmp.
  4389.  
  4390. Changes the SunView driver to prevent the Ghostscript window from being
  4391. destroyed (which badly confuses the interpreter).
  4392.  
  4393. Extends the Epson driver to handle a variety of print densities in both X
  4394. and Y, to handle 24-pin as well as 8-pin graphics, and to allow optional
  4395. specification of default density in the makefile (gdevs.mak).
  4396.  
  4397. Refactors the printer drivers so that a single driver handles both DeskJet
  4398. and LaserJet.  Adds LaserJet drivers that use the new compression modes on
  4399. the LJ IId/IIp and LJ III.
  4400.  
  4401. Changes all the printer drivers to use band lists rather than bitmap
  4402. paging as the buffering method.  (The individual drivers need only a
  4403. one-line change to replace mem_copy_scan_lines with
  4404. gdev_prn_copy_scan_lines with a different argument.)
  4405.  
  4406. Adds the halftone phase as additional arguments to tile_rectangle and
  4407. tile_trapezoid.
  4408.  
  4409. Adds an entirely new and much simpler PaintJet driver, using the new band
  4410. list interface.
  4411.  
  4412. Adds margin information to the device structure.  This is currently only
  4413. relevant for printer devices.
  4414.  
  4415. Adds BGIPATH and BGIUSER environment variables, allowing additional
  4416. control of the BGI driver.
  4417.  
  4418. Changes the x/y_pixels_per_inch member of the device structure from int to
  4419. float.
  4420.  
  4421. Fonts
  4422. -----
  4423.  
  4424. Patches gs_fonts.ps so definefont will add an isFixedPitch entry to
  4425. FontInfo if there isn't one there.
  4426.  
  4427. Removes the old "type 7 path" encoding code from gs_fonts.ps.
  4428.  
  4429. Changes bdftops so it puts isFixedWidth and ItalicAngle entries in the
  4430. FontInfo dictionary of the fonts it creates, since some P*stScr*pt
  4431. programs rely on this.
  4432.  
  4433. Changes bdftops so it synthesizes as many missing characters as possible
  4434. out of the ones that are there (in particular: synthesizes accents out of
  4435. punctuation marks, and accented characters using seac.)  The results
  4436. aren't all that good, but they're a lot better than having characters
  4437. missing out of the font.
  4438.  
  4439. Utilities
  4440. ---------
  4441.  
  4442. Adds a pfbtops utility for converting .PFB fonts to standard Ghostscript
  4443. fonts.
  4444.  
  4445. Fixes bugs:
  4446.     - ps2image didn't reset things properly between pages for
  4447. multi-page documents.
  4448.  
  4449. Interpreter
  4450. -----------
  4451.  
  4452. Makes Ghostscript recognize `-' alone as meaning that it should read from
  4453. standard input as though it were a file.  This allows Ghostscript to
  4454. accept a pipe as input.
  4455.  
  4456. Fixes bugs:
  4457.     - seac in type1addpath used the current font's encoding, not
  4458. StandardEncoding.
  4459.     - type1decryptfile (eexec) didn't recognize binary (as opposed to
  4460. hex) representation.
  4461.     - Mentioning a name whose value was a no-access object caused an
  4462. invalidaccess error.
  4463.     - There was a bogus definition of `run' in zfile.c.
  4464.     - The interpreter didn't handle end-of-file on stdin properly.
  4465.     - Real numbers with an 'e' or 'E' but no decimal point were not
  4466. recognized.
  4467.     - On MS-DOS systems, inside strings, \ followed by a newline was
  4468. not discarded properly.
  4469.     - On MS-DOS systems, the long unsigned divide routine sometimes
  4470. gave incorrect answers.  Among other things, this caused alternate-radix
  4471. numbers sometimes to crash the interpreter.
  4472.     - cvrs didn't do the right thing about reals or negative integers.
  4473.     - .echo.mode was being reset with def instead of store, and was
  4474. defined in systemdict rather than userdict.
  4475.     - setgray and settransfer didn't interact properly.
  4476.     - 16#80000000 was being interpreted as a signed integer (and
  4477. converted to a real) rather than an unsigned one.
  4478.     - atan returned 0 sometimes when it should have returned 180.
  4479.     - currentcmykcolor was defined wrong.
  4480.  
  4481. Removes the filename operator, since no standard Ghostscript code used it,
  4482. and it caused problems with some P*stScr*pt files.
  4483.  
  4484. Implements new operators: filenameforall, selectfont (as a procedure),
  4485. stringmatch, undef.
  4486.  
  4487. Adds new standard procedures: selectdevice.
  4488.  
  4489. For MS-DOS, requires that the operand and execution stacks be located in
  4490. the data segment, and uses short pointers to address them.  This produces
  4491. significantly smaller and faster code.  (These changes are not visible to
  4492. users or library clients.)
  4493.  
  4494. Changes the assignment of attribute bits, and adds new bits for
  4495. save/restore and the garbage collector.  Changes many of the macros in
  4496. store.h to support save/restore.  (These changes are not visible to users
  4497. or library clients.)  Implements save and restore.
  4498.  
  4499. Moves type names from gs_init.ps to ghost.h and ztype.c.
  4500.  
  4501. Moves error names from gs_init.ps to errors.h and iinit.c.
  4502.  
  4503. Introduces gp.h as a documented interface to the platform-specific files.
  4504.  
  4505. Adds the -- switch, which allows Ghostscript programs to take arguments
  4506. from the command line.
  4507.  
  4508. Changes many uses of the name `name' to something else, to avoid upsetting
  4509. the Microsoft C compiler.
  4510.  
  4511. Really implements packed arrays -- they took the same amount of space as
  4512. ordinary arrays in previous versions.
  4513.  
  4514. Changes exitserver in serverdict so that it just clears the stacks.  (This
  4515. isn't the correct fix, but it will do as a workaround.)
  4516.  
  4517. Makes many miscellaneous small changes to pacify various compilers.
  4518.  
  4519. Changes gs_fonts.ps so that when "quiet" mode is selected (-q switch),
  4520. Ghostscript doesn't print anything when loading fonts or when substituting
  4521. for undefined characters.
  4522.  
  4523. Defines the name consisting of just a control-D as a no-op, because some
  4524. P*stScr*pt-generating applications put control-Ds in their output.
  4525.  
  4526. Implements halftone phase (sethalftonephase and currenthalftonephase
  4527. operators).
  4528.  
  4529. Removes the -E switch, since it is no longer useful.
  4530.  
  4531. Changes the -w and -h switches to a single -g (geometry) switch, with
  4532. usage -g<width>x<height>.  Makes the -h switch, and a new -? switch, print
  4533. usage help.
  4534.  
  4535. Implements correct handling of stack overflow errors (makes an array out
  4536. of the contents of the overflowing stack, and resets the stack, before
  4537. invoking the error handler).
  4538.  
  4539. Adds t_oparray (`operators' defined as procedures) and the makeoperator
  4540. operator.  This is so that programs like the Distillery that rely on all
  4541. operators being bound by `bind' will work properly.
  4542.  
  4543. Adds a new NOPAUSE flag to suppress the prompt and pause at copypage and
  4544. showpage.
  4545.  
  4546. Library
  4547. -------
  4548.  
  4549. Fixes bugs:
  4550.     - gs_type1_interpret didn't store the encryption state or the skip
  4551. count before returning to let the client handle a seac or an endchar in
  4552. the middle of a seac.
  4553.     - The definition of the Type 1 operator ce_testadd was based on
  4554. wrong information; the operator takes only 2 operands and does something
  4555. unknown.
  4556.     - mem_true24_copy_mono wasn't incrementing the destination pointer
  4557. if the color was transparent, leading to garbled characters.
  4558.     - gx_lookup_fm_pair would sometimes look at one entry beyond the
  4559. end of the cached font/matrix pair area.  (This probably had no practical
  4560. effect.)
  4561.     - gs_type1_interpret didn't save the current point when returning
  4562. to the client for a callothersubr, causing some characters to be rendered
  4563. displaced (such as some of the chess pieces in chess.ps).
  4564.     - gs_setgray, gs_sethsbcolor, gs_setrgbcolor, gs_setflat, and
  4565. gs_setlinewidth gave errors for out-of-range operands rather than forcing
  4566. them into range.
  4567.     - Transfer functions were not actually supported.
  4568.     - The area fill algorithm failed on certain complex paths.
  4569.     - The current point was sometimes defined when a BuildChar
  4570. procedure was called.
  4571.     - Stroking a degenerate line didn't display anything for round
  4572. caps or joins.
  4573.     - If the ends of a curve had exactly the same X coordinate, the
  4574. curve sometimes wouldn't be displayed.
  4575.     - Very thin lines that went outside the clipping region would
  4576. sometimes be displayed as dashed, or not at all.
  4577.     - The translation in a FontMatrix was ignored.
  4578.     - Very wide, shallow lines would color extraneous pixels when
  4579. using bevel or miter joins.
  4580.     - Dashed lines didn't join properly at the beginning of a closed
  4581. path.
  4582.     - 0-degree arcs didn't add the appropriate line (possibly
  4583. degenerate) to the path.
  4584.     - gs_type1_interpret didn't reset the callsubr stack when starting
  4585. the base character of a seac, which caused confusion if the accent's
  4586. endchar fell inside a Subr.
  4587.     - Non-monochrome memory memory devices weren't checking the
  4588. arguments of the drawing procedures properly.
  4589.     - The initial clipping rectangle for memory devices was being
  4590. computed wrong.
  4591.     - Null devices had a semi-infinite clipping rectangle instead of
  4592. an empty one.
  4593.     - gs_setlinewidth was treating negative arguments as zero, instead
  4594. of taking the absolute value.
  4595.     - imagemask with a dithered color used a solid color rather than
  4596. the dithered one.
  4597.  
  4598. Tweaks the area fill and image rendering algorithms to be a little more
  4599. liberal with paint when being used to render characters.
  4600.  
  4601. Changes the name of the 8-bit mapped color memory device from
  4602. mem_mapped_color_device to mem_mapped8_color_device.
  4603.  
  4604. Changes the memory devices so that on little-endian platforms, they can
  4605. store the bytes within a word in either order.  (Little-endian order
  4606. allows efficient 32-bit updating, big-endian is required when displaying
  4607. or writing to a printer or a file.)
  4608.  
  4609. Implements halftone phase.
  4610.  
  4611. Replaces the trapezoid fill algorithm with a much more accurate one
  4612. inspired by a contribution from Paul Haeberli.  This also changes the
  4613. graphics convention back to filling only pixels whose center falls within
  4614. the region to be filled.
  4615.  
  4616. Changes the character cache to allocate headers and bits contiguously out
  4617. of a single ring buffer.
  4618.  
  4619. Changes gs_imagemask and gs_imagemask_init to take a thickness adjustment
  4620. parameter.
  4621.  
  4622. Changes gs_setcachedevice and gs_setcharwidth to take the graphics state
  4623. as a parameter.
  4624.  
  4625. Renames gx_device_memory_bitmap_size as gdev_mem_bitmap_size,
  4626. mem_copy_scan_lines as gdev_mem_copy_scan_lines, and
  4627. mem_bytes_per_scan_line as gdev_mem_bytes_per_scan_line.
  4628.  
  4629. Version 2.1.1 (1/15/91)
  4630. =============
  4631.  
  4632. This is a sub-release distributed to fix a few early bugs in 2.1, just in
  4633. time for the new GNU master tape.
  4634.  
  4635. Build procedures
  4636. ----------------
  4637.  
  4638. Removes all of the (undebugged) Level 2 code from the fileset, as well as
  4639. the (unused) file gdevvga.c.
  4640.  
  4641. Changes the tar file so that the files are stored in the directory
  4642. gs<version> rather than simply gs, e.g., gs211.
  4643.  
  4644. Interpreter
  4645. -----------
  4646.  
  4647. Changes the scanner so that \ is recognized within strings regardless of
  4648. whether the scanner is reading from a string or from a file.  This is
  4649. compatible with newer P*stScr*pt interpreters, and with the newer
  4650. P*stSc*pt language specification, but not with the older specification in
  4651. the original PostScript Language Reference Manual.
  4652.  
  4653. Drivers
  4654. -------
  4655.  
  4656. Fixes the max_value macro in gdevmem.c so that compilers won't complain
  4657. about a left shift by 32.
  4658.  
  4659. Adds 'byte' to the list of types that gdevx.c must sidestep because header
  4660. files use them.
  4661.  
  4662. Library
  4663. -------
  4664.  
  4665. Changes the computation of penum->unpack in gsimage.c so as not to upset
  4666. compilers that don't treat procedures and pointers to procedures as
  4667. compatible types for conditional expressions.
  4668.  
  4669. Version 2.1 (12/31/90)
  4670. ===========
  4671.  
  4672. This is primarily a bug fix release to clean up problems in 2.0.  It also
  4673. implements a first cut at the new color operators.
  4674.  
  4675. Build procedures
  4676. ----------------
  4677.  
  4678. Changes the separator for multiple directories in MS-DOS from ';' to '|',
  4679. since there is no way to include a ';' in a command line.
  4680.  
  4681. Adds <dir>/fonts to the default search path, where <dir> is c:/ghost for
  4682. MS-DOS systems and `pwd` for Unix systems.
  4683.  
  4684. Adds new documentation describing how to direct output to the printer.
  4685.  
  4686. Changes the PROCTYPE and USE8087 options in MSDOS.MAK to CPU_TYPE and
  4687. FPU_TYPE.  The latter now indicates the type of FPU to generate code for,
  4688. if any.
  4689.  
  4690. Drivers
  4691. -------
  4692.  
  4693. Adds a driver for the Canon BubbleJet BJ10e.
  4694.  
  4695. Modifies the EGA driver to handle (non-standard) frame buffers larger than
  4696. 64K.  Adds drivers for the VGA and for the EIZO MDB-10 (a 1024 x 768 frame
  4697. buffer).
  4698.  
  4699. Changes the X driver so that it clips to the window dimensions, rather
  4700. than reporting an error.
  4701.  
  4702. Notes that the H-P LaserJet driver, like the DeskJet driver, works under
  4703. Unix as well as MS-DOS.
  4704.  
  4705. Adds support for 120 X DPI mode, and for the LQ-1500, to the Epson driver.
  4706.  
  4707. Fonts
  4708. -----
  4709.  
  4710. Fixes bugs in bdftops:
  4711.     - It was using /UniqueId instead of /UniqueID as the key for the
  4712. font unique ID.  This effectively disabled the font cache.
  4713.     - The definition for .notdef was bogus -- an invalid CharString.
  4714.  
  4715. Changes ghost.ps and gfonts.ps so that NullFont is the initial font,
  4716. rather than Ugly.
  4717.  
  4718. Arranges things so that when attempting a font substitution, if the
  4719. default font is not found, NullFont is used instead.
  4720.  
  4721. Extends bdftops so that if certain easily synthesized characters are
  4722. missing from a font, it will attempt to synthesize them using available
  4723. characters.
  4724.  
  4725. Interpreter
  4726. -----------
  4727.  
  4728. Extends the -T switch to allow specifying a printf template for the
  4729. arguments of the procedure being traced.
  4730.  
  4731. Fixes bugs:
  4732.     - /0 was interpreted as equivalent to 0 (a number) rather than a
  4733. literal name.
  4734.     - packedarray was defined as being like array, instead of like
  4735. array followed by astore.
  4736.     - Many minor and harmless type mismatches (and a couple of very
  4737. minor genuine bugs) were upsetting the Apollo C compiler.
  4738.     - exp was incorrectly failing in certain cases with a negative
  4739. first argument.
  4740.     - copyscanlines incorrectly required at least 4 elements on the
  4741. operand stack, although it correctly only used the top 3.
  4742.     - readhexstring incorrectly read 1 byte even if the string length
  4743. was zero.
  4744.     - Not every place that expected an array would accept a packed
  4745. array.
  4746.     - Very complex paths (and infrequently other things) could produce
  4747. a 'memory leak'.
  4748.     - / alone would skip following whitespace and gather following
  4749. characters, rather than creating an empty name.
  4750.     - ghost.ps left newerror defined as true in $error, which resulted
  4751. in an erroneous error report if a program executed a 'stop'.
  4752.     - The definition of exitserver in serverdict didn't clear the
  4753. stack.
  4754.     - currentfile returned an executable file, rather than a literal
  4755. one.
  4756.     - setfont for Type 1 fonts didn't check the UniqueID in the font
  4757. dictionary against the one in the font's Private dictionary.
  4758.     - A value stored in a dictionary under the key /xxx couldn't be
  4759. retrieved using the key (xxx), and vice versa.
  4760.     - charpath with a Type 1 font on a string containing a 'space'
  4761. would produce garbage (it released the parent path inappropriately).
  4762.     - bytesavailable did not work properly for terminal input.
  4763.  
  4764. Changes the interface to the memory allocator so that it always takes an
  4765. element size and an element count, like calloc instead of malloc (but note
  4766. that alloc does *not* clear just-allocated blocks).  Gets rid of the
  4767. special 'dynamic' allocation procedures.
  4768.  
  4769. Changes the random number operators to use a better implementation.
  4770.  
  4771. Changes the idiv operator so it will accept any numbers, not just
  4772. integers, as arguments.  (The PostScript manual doesn't allow this, but
  4773. implementations apparently do.)
  4774.  
  4775. Provides semi-fake but usable definitions for all of the color PostScript
  4776. extensions, including a real implementation of colorimage.
  4777.  
  4778. No longer uses the name 'null', which is apparently reserved by Microsoft
  4779. C.  Makes a number of other minor changes required to pacify the Microsoft
  4780. C compiler.
  4781.  
  4782. Implements %statementedit and %lineedit.  (%statementedit is equivalent to
  4783. %lineedit, which is wrong.)  Changes the interactive interpreter to use
  4784. %statementedit.
  4785.  
  4786. Changes the scanner to accept null, ctrl-K (vertical tab), and ctrl-L
  4787. (form feed) as whitespace.  Ctrl-L terminates a comment, null and ctrl-K
  4788. do not.
  4789.  
  4790. Allows a literal string as the 'proc' argument(s) for image, imagemask,
  4791. and colorimage.
  4792.  
  4793. Adds the following operators/procedures: arct, cleardictstack, deletefile,
  4794. renamefile.
  4795.  
  4796. Defines =print as a synonym for =, for the benefit of LaserPrep.
  4797.  
  4798. Implements non-zero PaintType for the show operators (but not for
  4799. charpath) for Type 1 fonts.
  4800.  
  4801. Adds the ISOLatin1Encoding encoding vector.
  4802.  
  4803. Renames currentcolor and setcolor as currentgscolor and setgscolor, to
  4804. avoid conflict with the Level 2 PostScript names.  Removes colorhsb,
  4805. colorrgb, hsbcolor, and rgbcolor.
  4806.  
  4807. Library
  4808. -------
  4809.  
  4810. Fixes bugs:
  4811.     - In a couple of places, a 0 was being passed as a pointer
  4812. argument without casting, which confused the Microsoft C compiler.
  4813.     - Image devices were not recognized properly in debugging
  4814. configurations.
  4815.     - Inverted-color monochrome image devices were not recognized
  4816. properly.
  4817.     - Images that exactly fill the drawing area rendered very slowly,
  4818. because they erroneously used the general clipping algorithm.
  4819.     - Images that are 1-for-1 with the device were incorrectly scaled
  4820. by a factor of 8 in X.
  4821.     - Rounding artifacts sometimes caused characters to be unevenly
  4822. offset vertically by 1 pixel.
  4823.     - Type 1 fonts that used the Flex feature resulted in garbled
  4824. images.
  4825.     - The show operator routines would incorrectly fill or stroke a
  4826. path that existed at the time the show was started.
  4827.     - setscreen truncated the cell size instead of rounding, which
  4828. could produce off-by-1 anomalies.
  4829.     - stroke would sometimes produce garbage (or nothing at all) for
  4830. very narrow lines.
  4831.     - path filling would only color the pixels whose centers fell
  4832. inside the path: the Adobe specification requires coloring a pixel if any
  4833. part of it falls inside the path.
  4834.  
  4835. Changes the Epson printer driver so that it drives the printer directly
  4836. rather than writing to a file.
  4837.  
  4838. Changes pathbbox so that if the path is empty but there is a current
  4839. point, it returns a null rectangle at the current point.
  4840.  
  4841. Changes gs_image_init to take an additional parameter (after bps) giving
  4842. the number of samples per pixel (1, 3, or 4), and an indication of whether
  4843. the samples for each pixel are together or separated (-3 or -4).
  4844.  
  4845. Renames the gs_image_data and gs_imagemask_data procedures as gs_image and
  4846. gs_imagemask, and removes the old versions of the latter.
  4847.  
  4848. Adds gs_colorimage.
  4849.  
  4850. Replaces Snoopy's color dithering algorithm with one contributed by Paul
  4851. Haeberli.
  4852.  
  4853. Changes gs_setgray, gs_[set]hsbcolor, and gs_[set]rgbcolor so that they
  4854. coerce arguments outside the range [0..1] back into the range, instead of
  4855. signalling an error.
  4856.  
  4857. Makes a number of minor changes required to pacify the Microsoft C
  4858. compiler.
  4859.  
  4860. Changes gs_arcto so that if the last argument is a null pointer, the
  4861. tangent points are not returned.
  4862.  
  4863. Removes gs_type1addpath, which is not useful.  (Clients must call
  4864. gs_type1_init and gs_type1_interpret directly.)
  4865.  
  4866. Implements the 'seac' opcode for Type 1 fonts, allowing fonts with accented
  4867. characters to display properly.
  4868.  
  4869. Implements the undocumented 'testadd' opcode for Type 1 fonts, which is
  4870. used by some Adobe fonts.
  4871.  
  4872. Renames gs_currentcolor and gs_setcolor as gs_currentgscolor and
  4873. gs_setgscolor.  Removes gs_colorhsb, gs_colorrgb, gs_hsbcolor, and
  4874. gs_rgbcolor.
  4875.  
  4876. Version 2.0 (9/12/90)
  4877. ===========
  4878.  
  4879. The main purpose of this release is to add fonts, support for multiple
  4880. devices, and imaging into memory.  It also fixes a number of miscellaneous
  4881. bugs.  (Unfortunately, accurate records of the bugs fixed are not
  4882. available.)  The changes were so extensive that we chose to increment the
  4883. major version number.
  4884.  
  4885. Miscellaneous
  4886. -------------
  4887.  
  4888. Doesn't attempt to open the .MAP file on Unix systems.
  4889.  
  4890. Adds mention of statusd.ps to interp.doc.
  4891.  
  4892. Notes that Turbo C 2.0, not 1.5, is required for building the MS-DOS
  4893. version.
  4894.  
  4895. Adds a DEVICES= line to the makefile, and allows multiple devices.
  4896.  
  4897. Documents, in interp.doc, the X Windows resources that Ghostscript
  4898. recognizes.
  4899.  
  4900. Adds three PostScript masters to the fileset: chess.ps (+ cheq.ps),
  4901. golfer.ps, and escher.ps.
  4902.  
  4903. Drivers
  4904. -------
  4905.  
  4906. Changes the names of all the device drivers.  See gdevs.mak for the
  4907. updated list.
  4908.  
  4909. Adds a (working) driver for SunView.
  4910.  
  4911. Adds drivers for the Sony NeWS frame buffer, and the Sony Microsystems
  4912. NWP533 printers.  These drivers were contributed by users, so we aren't
  4913. prepared to answer questions about them.
  4914.  
  4915. Adds a driver for the Borland Graphics Interface (BGI) for MS-DOS systems.
  4916. Note that to use this driver with a non-EGA/VGA display, you need a .BGI
  4917. file appropriate for your hardware.  (The Ghostscript executable includes
  4918. the EGA/VGA driver.)
  4919.  
  4920. Adds a driver for Epson printers.  The driver has only been tested on an
  4921. LX-800, and on an H-P DeskJet in FX-80 emulation mode, but may work on
  4922. other models.  The driver could be adapted to work on Unix systems, but as
  4923. distributed, it only works on MS-DOS systems.
  4924.  
  4925. Adds a driver for the Hewlett-Packard DeskJet printer.  The driver could
  4926. be adapted to work on Unix systems, but as distributed, it only works on
  4927. MS-DOS systems.
  4928.  
  4929. The X Windows driver no longer waits for the user to type a character
  4930. before bringing up the initial display.
  4931.  
  4932. Adds information to drivers.doc describing how to change the definition of
  4933. the device structure and procedure table.
  4934.  
  4935. Extends the tile_rectangle and tile_trapezoid driver procedures to
  4936. interpret color0 = color1 = gx_no_color_index as meaning that the tile is
  4937. actually colored, not a mask.
  4938.  
  4939. Build procedures
  4940. ----------------
  4941.  
  4942. Changes the tar file so it puts everything in a directory called gs.
  4943.  
  4944. Removes the -ansi switch for gcc (this was causing problems with <math.h>
  4945. on some systems).
  4946.  
  4947. Changes LDPLAT to the string -X, which is appropriate for most Unix
  4948. systems (but not for SunOS 4.n).
  4949.  
  4950. Adds EXTRALIBS to the makefile, for specifying additional libraries to be
  4951. linked in.
  4952.  
  4953. Adds a 'clean' target for 'make', to get rid of all temporary files, the
  4954. binaries, and the executable.
  4955.  
  4956. Changes names of system-specific files from gp-xxx.c to gp_xxx.c.
  4957.  
  4958. Adds support for VMS (gp_vms.c and ghost.dcl).
  4959.  
  4960. Creates a new file gdevs.mak, and reorganizes the other makefiles, so that
  4961. the choice of which device driver(s) to include is isolated in a single
  4962. line in the platform-specific makefile.
  4963.  
  4964. Changes the standard MS-DOS makefile so it builds for 8088/86 (not 80386),
  4965. with neither -DNOPRIVATE nor -DDEBUG.
  4966.  
  4967. Changes the name of the MS-DOS makefile from dos-ega.mak to msdos.mak, and
  4968. the Unix makefiles from ux-[g]cc-x.mak to unix-[g]cc.mak.
  4969.  
  4970. Updates drivers.doc to describe how to add new drivers in gdevs.mak.
  4971.  
  4972. Removes gdevs.ps: the drivers are now responsible for specifying the size
  4973. of the imaging region.
  4974.  
  4975. Interpreter
  4976. -----------
  4977.  
  4978. Adds a makefile macro GS_LIB_DEFAULT and an environment variable GS_LIB to
  4979. define a search path for the library (initialization and font) files, and
  4980. implements the -I switch for the same purpose (replacing -sLIB=, which was
  4981. never actually implemented).  See interp.doc for details.
  4982.  
  4983. No longer clears the operand stack between interactive inputs.  No longer
  4984. prints the contents of the operand stack after every input in debug mode.
  4985.  
  4986. Doesn't "eat" the character that the user types to proceed after a
  4987. showpage, unless it's an isolated <return>.
  4988.  
  4989. Changes the prompt so that it says
  4990.     GS>
  4991. if the operand stack is empty, or
  4992.     GS<n>
  4993. if there are n > 0 elements on the operand stack.
  4994.  
  4995. Adds -w and -h switches to the command line, equivalent to -dWIDTH= and
  4996. -dHEIGHT= except that they require numeric arguments.
  4997.  
  4998. Adds -q (quiet startup) switch to the command line, which suppresses some
  4999. initial messages and also has an effect equivalent to -dQUIET.
  5000.  
  5001. Fixes bugs:
  5002.     - = and == caused an error on some kinds of objects if the object
  5003. didn't have read access.
  5004.     - cvs didn't print operator names.
  5005.     - The definition of dynamic_begin in iscan.c caused the DEC VMS C
  5006. compiler to produce incorrect code.
  5007.     - mul didn't return a correct (real) result when multiplying a
  5008. very large integer by an integer that wasn't very large.
  5009.     - eq and ne didn't work on files, fonts, save objects, and some
  5010. operators.
  5011.     - The scanner would sometimes blow up on floating point numbers
  5012. beginning with a '.'.
  5013.     - flushfile didn't pop its argument from the stack.
  5014.     - put and putinterval would store into a packed array.
  5015.     - a few operators didn't check properly for stack underflow.
  5016.     - cvrs produced wrong output for radix values greater than 10.
  5017.     - The scanner would convert upper-case letters in alternate-radix
  5018. numbers wrong on Unix systems.
  5019.     - String comparisons other than equality often produced the wrong
  5020. result if the strings were of different lengths.
  5021.     - An ifelse as the last thing inside a forall would confuse the
  5022. execution stack.
  5023.     - There were some omitted casts and 'private' declarations that
  5024. made the GNU compiler unhappy.
  5025.     - There was a memory leak in the image[mask] operators that caused
  5026. 516 bytes to be permanently lost each time one of them was used.
  5027.     - Quoted strings of length greater than 50 and less than 100 would
  5028. get mangled when being read in.
  5029.     - The scanner didn't consume the whitespace character following a
  5030. token, so programs that read data out of the program file could get
  5031. confused.
  5032.     - Under rare circumstances, an object of size between 249 and 255
  5033. bytes could get allocated on top of another object.
  5034.  
  5035. Allows bind to bind packed arrays, even though they aren't normally
  5036. writable.
  5037.  
  5038. Changes the length operator to allow a name as the argument.  (The
  5039. PostScript manual doesn't allow this, but implementations apparently do.)
  5040.  
  5041. Changes the setcachedevice operator to allow the bounding box to be
  5042. specified as a 4-element array instead of 4 scalars.  (The PostScript
  5043. manual doesn't allow this, but implementations apparently do.)
  5044.  
  5045. Removes a line from ghost.ps that accidentally disabled the font cache.
  5046.  
  5047. Implements memory devices (makeimagedevice, copyscanlines, and makedevice
  5048. for image devices).  makeimagedevice is implemented only for 1, 8, 24, and
  5049. 32 bits per pixel.
  5050.  
  5051. Changes the deviceparams operator so it pushes a mark on the stack below
  5052. the parameters.  This is to allow for devices that have more than the
  5053. standard set of parameters.
  5054.  
  5055. Replaces defaultdevicename with two new operators, getdevice and
  5056. devicename.
  5057.  
  5058. Adds a flushpage operator that flushes any outstanding buffered output to
  5059. the screen.  This is not the same as copypage: on printers, copypage
  5060. actually prints a page, whereas flushpage may do nothing; on displays,
  5061. flushpage and copypage may both flush output to a server.
  5062.  
  5063. Adds an unread operator for pushing back a character into a file.
  5064.  
  5065. Adds a description of proposed grayimage and colorimage operators to
  5066. ghost.doc, even though they aren't implemented yet.
  5067.  
  5068. Changes the name of the currentfileposition operator to fileposition.
  5069.  
  5070. Removes the framedevice operator, since the new device operators supersede
  5071. it.
  5072.  
  5073. Adds a writeppmfile operator, for writing the contents of a memory device
  5074. to a ppm file.
  5075.  
  5076. Makes Ghostscript work even when the >> operator doesn't sign-extend
  5077. negative numbers.  (This has not been tested.)
  5078.  
  5079. Adds the Symbol encoding to ghost.ps.
  5080.  
  5081. Adds two new file-related operators, filename and findlibfile.  See
  5082. ghost.doc and interp.doc for details.
  5083.  
  5084. Adds type1encrypt and type1decrypt operators for manipulating Adobe Type 1
  5085. encoded fonts.
  5086.  
  5087. Changes the imagecharpath and addcharpath operators to type1imagepath and
  5088. type1addpath.  These operators now work with the Adobe Type 1 font
  5089. encoding.
  5090.  
  5091. Adds the type1decryptfile operator for reading Adobe Type 1 encrypted
  5092. fonts.
  5093.  
  5094. Library
  5095. -------
  5096.  
  5097. Fixes bugs:
  5098.     - curveto and lineto didn't check for the current point being
  5099. defined.
  5100.     - stringwidth would fail if there was no current point.
  5101.     - There were omitted casts that made the GNU compiler unhappy.
  5102.     - Line caps and joins didn't always work.
  5103.     - Dashed lines didn't work at all.
  5104.     - If you read out the current matrix while inside a BuildChar
  5105. procedure, the result was garbage.
  5106.     - image[mask] would crash if you gave it a single string with more
  5107. than 64K-1 pixels (MS-DOS only).
  5108.     - Filling with a gray pattern sometimes wrote into pixels beyond
  5109. the right edge of the region (MS-DOS only).
  5110.     - The font cache would mistake fonts for each other if both fonts
  5111. had a default (unsupplied) "unique ID".
  5112.     - When a character was entered into the font cache for the first
  5113. time, sometimes it would display as garbage and/or displaced vertically
  5114. from its proper position.
  5115.  
  5116. Implements gs_makeimagedevice, gs_copyscanlines, gs_getdevice,
  5117. gs_devicename, gs_flushpage, gs_writeppmfile, gs_type1encrypt,
  5118. gs_type1decrypt, gs_type1imagepath, and gs_type1addpath procedures
  5119. corresponding to the new operators in the interpreter (see preceding
  5120. section).
  5121.  
  5122. Changes [gs_]setdevice so that it does an erasepage when it first opens
  5123. the device.
  5124.  
  5125. Changes definition of gx_device structure as follows.  NOTE: THIS AFFECTS
  5126. ALL DRIVERS.
  5127.  
  5128.     - Removes bits_from_MSB (which wasn't actually used, in any case).
  5129.         Ghostscript now assumes officially, as it always did in
  5130.         practice, that device bitmaps are stored MSB first, i.e., X=0
  5131.         corresponds to the 0x80 bit in the first byte.
  5132.  
  5133.     - Removes the initial_matrix member, which wasn't actually being
  5134.         set up.
  5135.  
  5136.     - Adds a new member 'name', a string giving the device name.
  5137.  
  5138.     - Adds new members 'x_pixels_per_inch' and 'y_pixels_per_inch'.
  5139.         These are only used by the default initial_matrix procedure
  5140.         (see below).
  5141.  
  5142.     - Adds a new procedure 'output_page'.  The default implementation
  5143.         (gx_default_output_page) just calls the sync_output procedure.
  5144.  
  5145.     - Adds a new procedure 'get_initial_matrix'.  The default
  5146.         procedure uses the width, height, and x/y_pixels_per_inch
  5147.         members to compute the matrix, assuming that X values run from
  5148.         right to left, and Y values run from top to bottom.
  5149.  
  5150. Changes the names of the allocation procedure types gs_proc_alloc and
  5151. gs_proc_free to proc_alloc_t and proc_free_t, and moves them from gs.h to
  5152. std.h.
  5153.  
  5154. Makes Ghostscript work even when the >> operator doesn't sign-extend
  5155. negative numbers.  (This has not been tested.)
  5156.  
  5157. Versions before 2.0
  5158. ===================
  5159.  
  5160. See the file history1.txt.
  5161.